J'essaie de comprendre l'utilisation de prefetch_related et select_related pour l'optimisation. J'ai appris quelque part dans le blog que l'un des endroits où utiliser prefetch et select est prefetch_related est utilisé pour la relation inverse et select_related pour la relation forward. Dans mon cas, il y a un modèle de CV et un modèle d'éducation. Le modèle d'éducation a FK de resume avec le nom associé pour la relation inverse au lieu d'écrire _set supplémentaire lors de l'interrogation. J'ai besoin de lister toute la formation d'un utilisateur demandé avec le CV de l'utilisateur demandé. Je pouvais le faire sans ces techniques d'optimisation comme suivreAttributeError: L'objet 'Resume' n'a pas d'attribut 'prefetch_related'
education_instance = Resume.objects.get(applicant=request.user).educations.all()
Lorsque j'ai essayé d'utiliser ce qui suit à la place, je reçois l'erreur je l'ai dit dans le titre
education_instance = Resume.objects.filter(applicant=request.user).prefetch_related('educations')
Voici mon modèle
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")
Quelqu'un peut-il me rendre clair sur select_related et prefetch_related avec de simples termes simples? Je ne comprenais pas la question que je reçois
De cette façon, je reçois seulement une requête au lieu de tous – milan
@milan que voulez-vous dire par un 'QuerySet'? –