django - filtro de consulta em manytomany está vazio


97

No Django, existe uma maneira de filtrar em um campo manytomany vazio ou nulo.

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)

Respostas:


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

44
E o inverso é possível comTestModel.objects.exclude(manytomany=None)
Alex L

Existe uma maneira de consultar objetos não relacionados / não anexados no 'OutroModelo'? Tentando limpar vários modelos.
bozdoz

2
Usar AnotherModel.objects.filter(testmodel_set=None)funcionou para mim. Se você estiver usando um nome relacionado , é claro que deve usá-lo.
Felipe

7

Somando-se a resposta de @Bernhard, outra solução possível pode ser alcançada usando o Q()objeto.

from django.db.models import Q

filters = Q(manytomany=None)

TestModel.objects.filter(filters)

Negação:

filters = ~Q(manytomany=None)

TestModel.objects.filter(filters)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.