django - el filtro de consulta en manytomany está vacío


96

En Django hay una manera de filtrar muchos campos que están vacíos o nulos.

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)

Respuestas:


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

43
Y lo inverso es posible conTestModel.objects.exclude(manytomany=None)
Alex L

¿Hay alguna forma de consultar objetos no relacionados / no adjuntos en el 'Otro modelo'? Intentando limpiar un modelo de varios a varios.
bozdoz

2
El uso AnotherModel.objects.filter(testmodel_set=None)funcionó para mí. Si está usando un nombre relacionado , por supuesto, debería usarlo en su lugar.
Felipe

6

Agregando a la respuesta de @Bernhard, se puede lograr otra posible solución utilizando el Q()objeto.

from django.db.models import Q

filters = Q(manytomany=None)

TestModel.objects.filter(filters)

Negación:

filters = ~Q(manytomany=None)

TestModel.objects.filter(filters)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.