我有一些性能問題,因爲我做了很多查詢調用,我不知道如何減少。優化此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