django - фильтр запросов на manytomany пуст

96

В Django есть способ фильтрации по пустому или нулевому полю manytomany.

class TestModel(models.Model):
    name = models.CharField(_('set name'), max_length=200)
    manytomany = models.ManyToManyField('AnotherModel', blank=True, null=True)

print TestModel.objects.filter(manytomany__is_null=True)
Джон
источник

Ответы:

152
print TestModel.objects.filter(manytomany=None)
Бернхард Валлант
источник
43
И обратное возможно сTestModel.objects.exclude(manytomany=None)
Alex L
Есть ли способ запросить несвязанные / несвязанные объекты в «Другой модели»? Пытаюсь очистить модель "многие ко многим".
bozdoz
2
Использование AnotherModel.objects.filter(testmodel_set=None)сработало для меня. Если вы используете родственное имя , вам, конечно, следует использовать его.
Фелипе
6

Добавляя к ответу @Bernhard, другое возможное решение может быть достигнуто с помощью Q()объекта.

from django.db.models import Q

filters = Q(manytomany=None)

TestModel.objects.filter(filters)

Отрицание:

filters = ~Q(manytomany=None)

TestModel.objects.filter(filters)
Ракмо
источник