我想了解使用prefetch_related和select_related進行優化。我在博客的某個地方瞭解到,使用預取和選擇的地方之一是prefetch_related用於反向關係,select_related用於前向關係。在我的情況下,有簡歷模型和教育模型。在查詢時,教育模型具有用於反向關係的resume的FK,而不是寫入額外的_set。我需要用請求的用戶簡歷列出請求用戶的所有教育。我能做到這一點沒有這些優化技術,爲後續AttributeError:'Resume'對象沒有屬性'prefetch_related'
education_instance = Resume.objects.get(applicant=request.user).educations.all()
當我試圖改用下面,我得到我的標題
education_instance = Resume.objects.filter(applicant=request.user).prefetch_related('educations')
這裏所述的錯誤是我的模型
class Resume(models.Model):
applicant = models.OneToOneField(User, on_delete=models.CASCADE)
name = models.CharField(max_length=100, blank=False, null=False, help_text="Full Name")
class Education(models.Model):
resume = models.ForeignKey(Resume, related_name='educations')
name = models.CharField(max_length=100, blank=False, null=False, help_text="Name of an institution")
任何人都可以讓我清楚select_related和prefetch_related與簡單的外行條件?我不明白我得到
這樣我只能得到一個查詢而不是所有的 – milan
@milan你是什麼意思由一個'QuerySet'? –