查找所有没有任何反向查找 m2m 值的对象
Posted
技术标签:
【中文标题】查找所有没有任何反向查找 m2m 值的对象【英文标题】:Find all the objects that does not have any reverse lookup m2m values 【发布时间】:2017-08-09 10:48:34 【问题描述】:我有一个联系人列表,每个联系人可以属于多个联系人列表。我需要做的是找到不属于任何 ContactList 的所有联系人(即孤立联系人)。
class ContactList(models.Model):
name = models.CharField()
contacts = models.ManyToManyField(Contact)
class Contact(models.Model):
name = models.CharField()
我尝试了以下方法,但它不起作用,因为 contactlist_set 是反向查找字段而不是模型字段。
Contact.objects.filter(contactlist_set=None)
有人能给我一些前进的方向吗?
谢谢
【问题讨论】:
也许这个:Contact.objects.filter(contactlist__isnull=False)
?
@nik_m 我得到了 FieldError:无法解析关键字“联系人列表”,联系人没有与联系人列表相关的直接字段
刚刚在本地测试过,它可以工作。你确定它失败了吗?
请允许我使用 dj 1.7
您在回溯中还得到了哪些choices
?
【参考方案1】:
我认为这应该适合你:
Contact.objects.filter(contactlist__isnull=False)
【讨论】:
感谢您的帮助!以上是关于查找所有没有任何反向查找 m2m 值的对象的主要内容,如果未能解决你的问题,请参考以下文章
使用 INNER JOIN 或 EXISTS 在 m2m 关系中查找属于多个是不是更好?