我有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