[英]In django, how do I return the other end of a many to many join?
我有一个这样的表模式。
您是一个用户,您想获取其他用户的list
(作为User
模型)。 我有一个已知的users.id
值。
此查询的 SQL 相对简单:加入users_B = entries_B.your_user
和entries_B.other_user = users_B.id
其中entries_B.your_user = x
。
除非我对数据进行后期处理(使用prefetch_related
计数作为后期处理)或生成一个非常奇怪的查询(涉及左连接和子查询的内容),否则我无法弄清楚如何在 django 中执行此操作。 有没有办法获取User
的列表并使生成的 SQL 简单明了?
这是入口模型:
class Entry_B(models.Model):
your_user = models.ForeignKey(
User, on_delete=models.CASCADE, related_name="entries"
)
other_user = models.ForeignKey(
User, on_delete=models.CASCADE, related_name="other_user_entries"
)
order = models.IntegerField()
expiration_date = models.DateTimeField()
User
模型不包含任何与这些关系相关的字段。
你可以.filter(…)
[Django-doc]使用:
User.objects.filter(other_user_entries__your_user=)
这将返回存在Entry_B
对象的User
,其中your_user
是给定的myuser
对象。
注意:通常最好使用
settings.AUTH_USER_MODEL
[Django-doc]来引用用户模型,而不是直接使用User
模型 [Django-doc] 。 有关更多信息,您可以查看文档的引用User
模型部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.