Подтвердить что ты не робот

QuerySet для непустого TextField

Для модели вроде:

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

Я пытаюсь сделать простой набор запросов для всех элементов, где поле "notes" не является пустым. Не найдя упоминания об этой возможности в документах, но через комментарий к отчету об ошибке обнаружил, что вы действительно можете сравнить с более чем:

items_with_notes = Item.objects.filter(notes__gt='')

Это работает, но чувствует себя как хак. "Больше чем" похоже, что он должен использоваться для числовых сравнений, а не для проверки того, пустое ли текстовое поле. Удивлен, чтобы не найти что-то вроде:

Item.objects.exclude(notes=blank)

Я что-то пропускаю, или это .filter(notes__gt = '') правильный способ сделать это?

4b9b3361

Ответ 2

вы также можете использовать объект Q:

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