django-manytomany上的查询过滤器为空


96

在Django中,有一种方法可以过滤多个字段为空或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)

Answers:


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

43
而相反的情况是可能的TestModel.objects.exclude(manytomany=None)
Alex L

有没有一种方法可以查询“ AnotherModel”中不相关/未附加的对象?试图清理多对多模型。
bozdoz

2
使用AnotherModel.objects.filter(testmodel_set=None)对我有用。如果您使用的是相关名称,那么您当然应该使用该名称
费利佩

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)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.