web-dev-qa-db-ja.com

django-manytomanyのクエリフィルターは空です

In Django=は、空またはnullのmanytomanyフィールドでフィルタリングする方法があります。

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)
76
John
print TestModel.objects.filter(manytomany=None)
117

@Bernhardの回答に加えて、Q()オブジェクトを使用して他の可能な解決策を実現で​​きます。

from Django.db.models import Q

filters = Q(manytomany=None)

TestModel.objects.filter(filters)

否定:

filters = ~Q(manytomany=None)

TestModel.objects.filter(filters)
1
Rakmo