小编Nun*_*ang的帖子

Django 2.0 - iexact 翻译为 LIKE 而不是 ILIKE

我有一个这样的模型:

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()

    class Meta:
        db_table = 'article'
Run Code Online (Sandbox Code Playgroud)

我写了查询:

articles = Article.objects.filter(title__iexact='hello world')
print(articles.query)
Run Code Online (Sandbox Code Playgroud)

输出是:

SELECT ... FROM `article` WHERE `article`.`title` LIKE hello world
Run Code Online (Sandbox Code Playgroud)

可以看到iexact被翻译成了LIKE。但是 django 文档说它将转换为 ILIKE,谁错了?

顺便一提:

  1. 我的 mysql 排序规则是 utf8_bin。

  2. mysql 在 ubuntu 上提供服务。

  3. 代码在windows上运行。

mysql django django-models django-orm

3
推荐指数
1
解决办法
2104
查看次数

TimeField 不支持“之间”查找或不允许在该字段上进行连接

我有一个这样的模型:

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    create_time = models.DateTimeField(auto_now_add=True,null=True)
Run Code Online (Sandbox Code Playgroud)

我在视图函数中编写了一条查询语句,如下所示:

from datetime import time
start_time = time(hour=17)
end_time = time(hour=18)
articles = Article.objects.filter(create_time__time__between=(start_time,end_time))
Run Code Online (Sandbox Code Playgroud)

但是Django引发异常django.core.exceptions.FieldError: Unsupported lookup 'between' for TimeField or join on the field not permitted.django文档说这是正确的。如果我想要过滤时间在17到18之间,我该怎么办?

django django-models django-orm

3
推荐指数
1
解决办法
1777
查看次数

标签 统计

django ×2

django-models ×2

django-orm ×2

mysql ×1