我有2个模型,用户(django.contrib.auth.models.User)和一个名为Log的模型。两者都包含一个“电子邮件”字段。日志没有指向用户模型的ForeignKey。我试图找出如何使用电子邮件字段作为通用性在这两个表上执行JOIN。在不相关的Django模型上执行SQL JOIN?
基本上有2个我想要执行的查询。一个基本的过滤连接
#Get all the User objects that have related Log objects with the level parameter set to 3.
User.objects.filter(log__level=3)
我也想做一些聚合。
User.objects.all().anotate(Count('log'))
当然,能够做相反的做法也是很好的。
log = Log.objects.get(pk=3)
log.user...
有没有办法用ORM做到这一点?也许我可以添加到模型的Meta类来“激活”关系?
谢谢!
这与注释相结合,应该涵盖你的两个用例,我想。 – 2010-02-25 09:27:13
+1仅供DuckPunching使用 – Wogan 2010-02-26 02:13:20
因此,要“使用level参数设置为3来获取所有具有相关Log对象的User对象”,您应该为每个用户调用日志功能。似乎很多疑问。 Extra允许在一个查询中执行此操作。 – sunprophit 2014-01-29 22:11:17