2010-11-15 5 views
64

Dans Django, il existe un moyen de filtrer un champ manytomany vide ou nul.django - le filtre de requête sur manytomany est vide

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) 

Répondre

94
print TestModel.objects.filter(manytomany=None) 
+27

Et l'inverse est possible avec 'TestModel.objects.exclude (ManyToMany = None)' –

+0

Y at-il un moyen d'interroger des objets sans rapport avec/hors famille dans le 'AnotherModel'? Essayer de nettoyer un modèle de plusieurs à plusieurs. – bozdoz

+0

L'utilisation de 'AnotherModel.objects.filter (testmodel_set = None)' a fonctionné pour moi. Si vous utilisez un [nom associé] (https://docs.djangoproject.com/fr/dev/topics/db/queries/#backwards-related-objects), vous devriez bien sûr l'utiliser à la place. – Felipe

Questions connexes