我有一些性能问题,因为我做了很多查询调用,我不知道如何减少。优化此django代码?
user_item_rel_set是用户和项目之间的m2m关系,显示用户为特定项目支付了多少费用。每个项目可以有多个用户和购买者,并且我试图为特定用户获取m2m关系。
# find anything that you bought or used and how much you paid for it
u = User.objects.get(id=self.uid)
t = self.list.filter(user_item_rel__user__exact=u)
y = self.list.filter(buyer_item_rel__buyer__exact=u)
items = t | y
items = items.distinct()
u = User.objects.get(id=self.uid)
for t in items:
try:
t.price = t.user_item_rel_set.get(user=u).payment_amount
except:
t.price = -1 * t.buyer_item_rel_set.get(buyer=u).payment_amount
return items
,并在另一个实例
for i in new_list:
if str(i.tag) not in x:
x[str(i.tag)] = 0
if houseMode == 0:
x[str(i.tag)] += float(i.user_item_rel_set.get(user__id__exact=self.uid).payment_amount)
else:
x[str(i.tag)] += float(i.price)
因此项目具有一定的价格,它的M2M关系(user_item_rel)具有多少用户为该项目付费。我有一个用户参与的项目清单(具体是你的代码),我试图检索用户为每个项目支付了多少,但是如果不为每一个项目敲击数据库,我都无法做到这一点。 – victor 2009-11-07 01:16:33
因此'payment_amount'字段存储在用户和项目之间的关系对象上?我认为M2M关系有其自己的模型? – 2009-11-07 01:48:02
是的,就是这样。 – victor 2009-11-07 01:57:18