【发布时间】:2010-09-28 17:24:38
【问题描述】:
我有一堆类似这样的模型(我正在用相对简写形式打出来):
class User:
pass
class ItemList:
pass
# A User can have more than one ItemList
# An ItemList can have more than one User
# Classic M2M
class ItemListOwnership:
user = fk(User)
itemlist = fk(ItemList)
# An ItemList has multiple Items
class Item:
itemlist = fk(ItemList)
我想要做的是显示给定用户(或现有用户的查询集)在其各种列表中的项目数的简单计数。 我需要计算 M2M 鸿沟。
这就是我卡住的地方。如果这是唯一可行的纯 SQL 方法,我对纯 SQL 方法感到满意,但我真的不想陷入每个用户发出 n + 1 个查询的情况(其中 n 是用户拥有的列表数量)只是为了计数......
编辑:我没有使用“真正的”models.ManyToMany(..) 关系,因为我在 ItemListOwnership 中定义了其他东西,这些东西更好地描述了这种关系。如果它是杀手,我可能会将此元数据移动到其他地方并摆脱 ItemListOwnership 并在 ItemList 中插入 m2m
【问题讨论】:
标签: python sql django django-models