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 字段的最后一个元素查询对象