Na stránke šablón, keď chcem prechádzať cez premenné objektu súvisiaceho s cudzím kľúčom, používam funkciu set.all.
Napríklad:
{% for object2_info in object1.object2_set.all %}
{[object2_info.something}}
{% endfor %}
Čo nechápem je, ako to môžem urobiť opačne? Myslíte si, že by to bolo niečo také:
{% for object1_info in object2.object1_set.all %}
{[object1_info.something}}
{% endfor %}
ale to nie je tento prípad.
Akákoľvek pomoc by bola ocenená.
odpovede:
1 pre odpoveď č. 1Závisí to od definícií vášho modelu. Predpokladajme, že máte nasledujúci vzťah medzi mnohými:
class Autor(models.Model):
name = models.CharField(max_length=42)
class Entry(models.Model):
title = models.CharField(max_length=21)
authors = models.ManyToManyField(Author)
Tu môžeme získať prístup k záznamom ako vo vašom prvom príklade za predpokladu, že prejdeme ako Author
namietať proti našej šablóne:
{% for entry in author.entry_set.all %}
{{ entry.title }}
{% endfor %}
Ale neexistuje author_set
na Entry
, pretože sme to výslovne nazvali: authors
.
{% for author in entry.authors.all %}
{{ author.name }}
{% endfor %}
Viac o tomto môžete prečítať úradnú dokumentáciu.