用的方法來獲取所有相關的連接,它更好只返回一個QuerySet,或通過查詢集迭代返回ID列表?Django的方法返回
示例代碼:
class Foo(models.Model):
bar = models.ForeignKey(Bar, related_name="foos")
class Bar(models.Model):
is_active = models.BooleanField(default=True)
def get_foos(self):
#this is the method to focus on for the question
返回一個查詢集所有需要在get_foos
如下:
return self.foos.all()
但要獲得ID列表,那就要看看因此:
foos = self.foos.all()
ids = []
for foo in foos:
ids.append(foo.pk)
return ids
我正在通過API看,他們使用後者,但我做不太明白爲什麼你會真的這樣做,如果你可以像前一樣做一個單線程! 有人可以解釋這些方法的好處嗎?如果有特定情況下哪一個比另一個更好?
只是爲了記錄:至少MySQL的是更高效的編寫過濾子句'my_query.filter(foo__pk__in =名單(IDS))',因爲它會避免子查詢。 –