django-manytomany의 쿼리 필터가 비어 있습니다.


97

Django에는 manytomany 필드가 비어 있거나 null 인 경우 필터링하는 방법이 있습니다.

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)

답변:


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

43
그리고 그 반대는 가능합니다TestModel.objects.exclude(manytomany=None)
Alex L

'AnotherModel'에서 관련되지 않은 / 연결되지 않은 개체를 쿼리하는 방법이 있습니까? 다 대다 모델을 정리하려고합니다.
bozdoz

2
사용하는 AnotherModel.objects.filter(testmodel_set=None)날 위해 일했습니다. 관련 이름을 사용하는 경우 당연히 대신 사용해야합니다.
Felipe

6

@Bernhard 답변에 추가하면 Q()객체를 사용하여 다른 가능한 솔루션을 얻을 수 있습니다 .

from django.db.models import Q

filters = Q(manytomany=None)

TestModel.objects.filter(filters)

부정:

filters = ~Q(manytomany=None)

TestModel.objects.filter(filters)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.