如果你有一些車型:Django的 - 優化問題
class Teacher(models.Model):
name = models.CharField(max_length=50)
class Student(models.Model):
age = models.PositiveIntegerField()
teacher = models.ForeignKey(Teacher, related_name='students')
並且你使用這樣的:
>>> student = Student.objects.get(pk=1)
>>> student.teacher.name # This hits the database
'Some Teacher'
>>> student.teacher.name # This doesn't (``teacher`` is cached on the object)
'Some Teacher'
這真棒。 Django緩存相關對象,以便您可以再次使用它,而不必濫用數據庫。
但,如果你使用這樣的:
>>> teacher = Teacher.objects.get(pk=1)
>>> for student in teacher.students.all(): # This hits the database
... print(student.age)
...
8
6
>>> for student in teacher.students.all(): # This does too (obviously)
... print(student.age)
...
8
6
有沒有緩存或相關對象的有效訪問這個方向發展。
我的問題是這樣的:有沒有一種有效的方式內置(或無問題的方式)向後訪問相關的對象(緩存的方式),就像你可以在上面的student.teacher
的例子嗎?
我想這是因爲我在那一遍遍需要訪問同相關對象的多種方法,模型之所以這麼說應該有12個查詢頁面結束了約30
優秀!每次遇到新問題時,你都會遇到同樣的問題。你就像我宮城先生,雖然諷刺你的名字是丹尼爾:)再次感謝。 – orokusaki 2010-11-27 19:21:36
在這種情況下select_related()不起作用嗎? – jMyles 2010-11-27 20:20:48