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

Posted

技术标签:

【中文标题】django - manytomany 上的查询过滤器为空【英文标题】:django - query filter on manytomany is empty 【发布时间】:2011-05-10 05:34:14 【问题描述】:

在 Django 中,有一种方法可以过滤为空或为空的多态字段。

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)

【问题讨论】:

【参考方案1】:
print TestModel.objects.filter(manytomany=None)

【讨论】:

反之亦然TestModel.objects.exclude(manytomany=None) 有没有办法查询“AnotherModel”中不相关/未附加的对象?尝试清理多对多模型。 使用AnotherModel.objects.filter(testmodel_set=None) 为我工作。如果您使用的是related name,您当然应该使用它。【参考方案2】:

除了@Bernhard 答案之外,还可以使用Q() 对象来实现其他可能的解决方案。

from django.db.models import Q

filters = Q(manytomany=None)

TestModel.objects.filter(filters)

否定:

filters = ~Q(manytomany=None)

TestModel.objects.filter(filters)

【讨论】:

以上是关于django - manytomany 上的查询过滤器为空的主要内容,如果未能解决你的问题,请参考以下文章

Django ManyToMany 字段上的自定义列名

如何直接查询Django为ManyToMany关系创建的表?

Django - 按添加到 ManyToMany 字段的最后一个元素查询对象

如何在django中查询具有manytomany字段指向它们的对象

Django DRF视图过滤ManyToMany查询集

Django Admin 中的 ForeignKey 或 ManyToMany 字段搜索