在我的模型中,我得到了这个:
Model(models.Model):
prices = models.ManyToManyField('Price')
def foo(self):
obj_prices = self.prices.all() # I expect save all prices in 'obj_prices'
fist_price = obj_prices[0] # I need the first price
for obj_price in obj_prices: # Also I need to check each price
// Do something
正如我评论的那样,我希望将所有价格保存在' obj_prices'防止多次查询。但我用Debug Toolbar检查了这个,我得到了这个:
SELECT ••• FROM `app_model` ASC LIMIT 1
SELECT ••• FROM `app_model` ASC
有什么想法吗?感谢。
答案 0 :(得分:0)
QuerySets是惰性的,只在需要时执行。它试图通过在第一个查询中仅执行LIMIT 1来帮助您。
如果你要反复遍历查询集,强制它执行:
obj_prices = list(self.prices.all())