用于非空TextField的QuerySet

sha*_*ker 16 django django-models

对于像这样的模型:

class Item(models.Model):
    notes = models.TextField(blank=True)
    ....
Run Code Online (Sandbox Code Playgroud)

我正在尝试为"notes"字段非空的所有项目执行简单的查询集.没有在文档中提到这种功能,但通过对错误报告的评论,发现您实际上可以与大于:

items_with_notes = Item.objects.filter(notes__gt='')
Run Code Online (Sandbox Code Playgroud)

这有效,但感觉就像一个黑客."大于"似乎应该用于数字比较,而不是用于检查文本字段是否为空.惊讶不要找到像:

Item.objects.exclude(notes=blank)
Run Code Online (Sandbox Code Playgroud)

我忽略了什么,或者是.filter(notes__gt ='')正确的方法吗?

Ign*_*ams 28

.exclude(notes=u'')

在这里阅读更多:django.db.models.query.QuerySet.exclude

  • 你确定 `.exlude(notes=None)` 真的有效吗?我认为这种检查应该用`__isnull=True/False`来完成:`.exclude(notes=u'').exclude(notes__isnull=True)` (2认同)