django - filtr zapytania w manytomany jest pusty


97

W Django istnieje sposób na filtrowanie pustego lub zerowego pola 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)

Odpowiedzi:


157
print TestModel.objects.filter(manytomany=None)

44
I odwrotnie jest możliwe zTestModel.objects.exclude(manytomany=None)
Alex L

Czy istnieje sposób przeszukiwania niepowiązanych / niedołączonych obiektów w „AnotherModel”? Próbuję wyczyścić model „wiele do wielu”.
bozdoz

2
Używanie AnotherModel.objects.filter(testmodel_set=None)zadziałało dla mnie. Jeśli używasz nazwy pokrewnej , oczywiście powinieneś jej użyć.
Felipe

7

Dodając do odpowiedzi @Bernhard, inne możliwe rozwiązanie można osiągnąć za pomocą Q()obiektu.

from django.db.models import Q

filters = Q(manytomany=None)

TestModel.objects.filter(filters)

Negacja:

filters = ~Q(manytomany=None)

TestModel.objects.filter(filters)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.