django - il filtro di query su manytomany è vuoto


96

In Django c'è un modo per filtrare un campo manytomany vuoto o nullo.

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)

Risposte:


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

43
E il contrario è possibile conTestModel.objects.exclude(manytomany=None)
Alex L

C'è un modo per interrogare oggetti non correlati / non collegati in "AnotherModel"? Sto cercando di ripulire un modello molti a molti.
bozdoz

2
L'utilizzo ha AnotherModel.objects.filter(testmodel_set=None)funzionato per me. Se stai usando un nome correlato , dovresti ovviamente usarlo.
Felipe

6

Aggiungendo alla risposta di @Bernhard, un'altra possibile soluzione può essere ottenuta utilizzando l' Q()oggetto.

from django.db.models import Q

filters = Q(manytomany=None)

TestModel.objects.filter(filters)

Negazione:

filters = ~Q(manytomany=None)

TestModel.objects.filter(filters)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.