用于非空TextField的QuerySet

时间:2010-01-31 09:22:26

标签: django django-models

对于像这样的模型:

class Item(models.Model):
    notes = models.TextField(blank=True)
    ....

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

进行比较
items_with_notes = Item.objects.filter(notes__gt='')

这很有效,但感觉就像是黑客。 “大于”似乎应该用于数字比较,而不是用于检查文本字段是否为空。很惊讶没有找到类似的东西:

Item.objects.exclude(notes=blank)

我是否忽略了某些东西,或者是.filter(notes__gt ='')正确的方法吗?

2 个答案:

答案 0 :(得分:27)

.exclude(notes=u'')

在此处阅读更多内容:django.db.models.query.QuerySet.exclude

答案 1 :(得分:1)

你也可以使用Q对象:

from django.db.models import Q
Item.objects.filter(~Q(notes=''))