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)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.