我想減少我的查詢計數,並有一個問題。Django - 常見情景:產品與M2M - >類別。如何有效地查詢產品查詢集上的所有類別?
我有一個典型的產品模型,可以有多個類別。
Product M2M -> Category
我定義的函數,拉主目錄(讓剛剛說其最新的一個):
class Category(models.Model):
name = models.CharField(max_length=1)
class Product(models.Model):
category = models.ManyToManyField(Category)
def main_category(self):
return self.category.latest('id')
# or any other way to determine main category
我通過產品在我的模板迭代,顯示它的主要類別。
{% for product in products %}
Name: {{ product.name }}
Category: {{ product.main_category }}
{% endfor %}
這會導致對每個產品的查詢。我如何在Python中用更少的查詢來獲得它?
對於我的其他MultipleObjectFK -> Product
車型我已經能夠partition my queries (slideshow)和只使用2 +查詢蟒蛇, 但我似乎無法將它應用於M2M,因爲當我拉了在我的產品的查詢集引用的類別,我不知道哪個產品觸發了類別匹配。
我傾向於在我的模型上設置一個main_category
字段,該字段在有M2MField更改信號時計算出類別ID。
感謝您的時間:)
真的很有趣使用的 「通過」 的模式,我會記住這下一次。謝謝! – 2010-12-04 11:06:45