Note that there are some explanatory texts on larger screens.

plurals
  1. PONewbie 1st atempt at prefetch_related - returns blank
    primarykey
    data
    text
    <p>I asked this question before, but I received no solutions, so I have tried to make the question concise &amp; clearer this time.</p> <p>My database has the following simplified schema:</p> <pre><code>class RIAchievement(models.Model): riAchievementID = models.AutoField(primary_key=True, db_column="riAchievementID") userLanguageVersionID = models.ForeignKey(UserLanguageVersion, db_column="userLanguageVersionID", related_name="riAchievement_userLanguageVersionID") class Meta: db_table="riAchievement" class UserLanguageVersion(models.Model): userLanguageVersionID = models.AutoField(primary_key=True, db_column="userLanguageVersionID") languageCodeID = models.ForeignKey(LanguageCode, db_column="languageCodeID", related_name="userLanguageVersion_languageCodeID") class Meta: db_table="userLanguageVersion" class LanguageCode(models.Model): languagecodeID = models.AutoField(primary_key=True, db_column="languageCodeID") class Meta: db_table="languageCode" class Flag(models.Model): flagID = models.AutoField(primary_key=True, db_column="flagID") languageCodeID = models.ForeignKey(LanguageCode, db_column="languageCodeID", related_name="flag_languageCodeID") flagIconPath = models.CharField(max_length=255, db_column="flagIconPath") class Meta: db_table="flag" </code></pre> <p>Essentially, riachievement can have many userlanguageversion s and userlanguageversion can have many languagecode s, and flag can have many languagecode s.</p> <p>Using <strong>select_related</strong> does not return <em>flag.flagIconPath</em> because of the 1 to many relationship, so the Django docs state I must use <strong>prefetch_related</strong>, with the <strong>related name</strong> of the 1 to many foreign key.</p> <p>So I amend my code in my <strong>view.py</strong>:</p> <pre><code>from django.shortcuts import render from app_data.models import RIAchievement def ri_achievements(request): qs = RIAchievement.objects.select_related("riachievement", "userlanguageversion", "languagecode", "flag_languageCodeID").all() return render(request, 'index.html',{'qs': qs}) </code></pre> <p>And my <strong>index.html</strong>:</p> <pre><code>{% for ri_achievement in qs %} {{ ri_achievement.userLanguageVersionID.langaugeCodeID.flag_languageCodeID.flagIconPath }} {% endfor %} </code></pre> <p>But, this code returns nothing.</p> <p>Can anyone offer some advice, as I cannot see what I have done wrong?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload