Ich habe 2 Modelle. Charaktere und CharaktereDetails von einer Django-Site, mit der ich herumalbere.Django select_related Abfrage gibt nicht alle Werte an die Vorlage zurück
CharactersDetails eine foreignkey Beziehung zu Charakteren hat
class CharactersDetails(models.Model):
character_link = models.ForeignKey(Characters)
Aus meiner Sicht ich das tue:
'character_info': CharactersDetails.objects.select_related('character_link').filter(character_link_id=pk)
In meiner Vorlage, bin immer ich nur die Felder aus den CharactersDetails zurück Tabelle.
In der manage.py-Shell habe ich dieselbe Abfrage ausgeführt und festgestellt, dass sie tatsächlich die Felder von CharactersDetails und Characters zurückgibt (was ich will), aber wenn die Ansicht das Kontextobjekt erhält, werden nur die Elemente angezeigt aus der CharactersDetails-Tabelle.
(looking_for_guild_env)klainn:~/workspace (master) $ python manage.py shell
Python 3.4.3 (default, Nov 17 2016, 01:08:31)
>>> from players.models import Characters,CharactersDetails
>>> myjunk = CharactersDetails.objects.select_related('character_link').filter(character_link_id=1)
>>> print(myjunk)
<QuerySet [<CharactersDetails: CharactersDetails object>]>
>>> print(myjunk.query)
SELECT "characters_details"."id", "characters_details"."character_link_id", "characters_details"."character_class_id", "characters_details"."character_race_id", "characters_details"."character_level", "characters_details"."character_armory_url", "characters_details"."character_profile_image_url", "characters_details"."character_profile_avatar_url", "characters_details"."character_profile_inset_url", "characters"."id", "characters"."character_owner_id", "characters"."character_name", "characters"."character_realm_id", "characters"."character_faction_id", "characters"."insert_date" FROM "characters_details" INNER JOIN "characters" ON ("characters_details"."character_link_id" = "characters"."id") WHERE "characters_details"."character_link_id" = 1
>>>
Ich nehme das gleiche Abfrage und in die manage.py dbshell einfügen:
(looking_for_guild_env)klainn:~/workspace (master) $ python manage.py dbshell
sqlite> SELECT "characters_details"."id", "characters_details"."character_link_id", "characters_details"."character_class_id", "characters_details"."character_race_id", "characters_details"."character_level", "characters_details"."character_armory_url", "characters_details"."character_profile_image_url", "characters_details"."character_profile_avatar_url", "characters_details"."character_profile_inset_url", "characters"."id", "characters"."character_owner_id", "characters"."character_name", "characters"."character_realm_id", "characters"."character_faction_id", "characters"."insert_date" FROM "characters_details" INNER JOIN "characters" ON ("characters_details"."character_link_id" = "characters"."id") WHERE "characters_details"."character_link_id" = 1;
1|1|15|7|110|http://us.battle.net/wow/en/character/Stormrage/Peppiwyn/simple|stormrage/219/182881755-profilemain.jpg|stormrage/219/182881755-avatar.jpg|stormrage/219/182881755-inset.jpg|1|3|Peppiwyn|192|0|2017-03-20
Und ich alle Felder aus. Aber die Vorlage wird nicht die letzten 6 Werte übergeben. Das konnte ich sehen, wenn ich ein .values () bis zum Ende des queryset hinzufügen und dann ein:
{{ character_info }}
in der Vorlage sehe ich:
<QuerySet [{'id': 1, 'character_profile_image_url': 'stormrage/219/182881755-profilemain.jpg', 'character_race_id': 7, 'character_level': 110, 'character_profile_avatar_url': 'stormrage/219/182881755-avatar.jpg', 'character_profile_inset_url': 'stormrage/219/182881755-inset.jpg', 'character_armory_url': 'http://us.battle.net/wow/en/character/Stormrage/Peppiwyn/simple', 'character_link_id': 1, 'character_class_id': 15}]>
Habe ich etwas falsch gemacht oder ist Gibt es einen besonderen Weg, ich sollte diese Werte aus der Vorlage aufrufen?
Danke fürs Lesen.