web-dev-qa-db-fra.com

django - le filtre de requête sur manytomany est vide

Dans Django, il existe un moyen de filtrer un ou plusieurs champs vides ou nuls.

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)
71
John
print TestModel.objects.filter(manytomany=None)
110
Bernhard Vallant

En ajoutant à la réponse @Bernhard, une autre solution possible peut être obtenue en utilisant l'objet Q().

from Django.db.models import Q

filters = Q(manytomany=None)

TestModel.objects.filter(filters)

Négation:  

filters = ~Q(manytomany=None)

TestModel.objects.filter(filters)
1
Omkar Deshpande