django - фільтр запитів на manytomany порожній


96

У Django є спосіб фільтрувати багато полів, які є порожніми або нульовими.

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

Чи є спосіб запитувати непов’язані / неприєднані об’єкти в 'AnotherModel'? Спроба очистити модель від багатьох до багатьох.
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.