In diesem Artikel werde ich schreiben, wie in Template angezeigt wird, was durch ManyToManyField verbunden ist.
Lassen Sie uns zuerst das Modell überprüfen.
models.py
class Kadai(models.Model):
class Meta:
verbose_name = 'Aufgabe'
verbose_name_plural = 'Aufgabe'
kadai_name = models.CharField(
verbose_name='Name der Ausgabe',
max_length=100,
unique=True,
)
category_number = models.IntegerField(
verbose_name='Anzahl der Ausgabekategorien',
default=0,
)
kadai_thumbnail = models.ImageField(
verbose_name='Daumenbild',
upload_to='media',
)
def __str__(self):
return self.kadai_name
class KadaiCategory(models.Model):
class Meta:
verbose_name = 'Problemkategorie'
verbose_name_plural = 'Problemkategorie'
kadai_name = models.ManyToManyField(Kadai)
category_name = models.CharField(
verbose_name='Kategoriename',
max_length=100,
unique=True
)
kadai_number = models.IntegerField(
verbose_name='Anzahl der Aufgaben',
default=0
)
category_thumbnail = models.ImageField(
verbose_name='Daumenbild',
upload_to='media',
)
def __str__(self):
return self.category_name
Dies ist das große Ganze, aber es ist lang, also werde ich es ein wenig verkürzen.
models.py
class Kadai(models.Model):
class Meta:
verbose_name = 'Aufgabe'
verbose_name_plural = 'Aufgabe'
kadai_name = models.CharField(
verbose_name='Name der Ausgabe',
max_length=100,
unique=True,
)
.
.
.
def __str__(self):
return self.kadai_name
class KadaiCategory(models.Model):
class Meta:
verbose_name = 'Problemkategorie'
verbose_name_plural = 'Problemkategorie'
kadai_name = models.ManyToManyField(Kadai)
category_name = models.CharField(
verbose_name='Kategoriename',
max_length=100,
unique=True
)
.
.
.
def __str__(self):
return self.category_name
Dies macht es etwas einfacher zu sehen. Im Moment hat die "Kadai" -Klasse einige Herausforderungen, und die "Kadai-Kategorie" -Klasse hat mehrere Kategorien. Mit anderen Worten, weil es "viele zu viele" ist, verwende ich ManyToManyField. Schauen wir uns nun die Vorlage an. Diese HTML-Datei ist mit "Kadai Category" verbunden.
kadai_category.html
{% for category in object_list %}
<div class="col-4 one-card">
<div class="card" style="width: 18rem;">
<img src="{{ category.category_thumbnail.url }}" height="300" alt="Es ist ein Miniaturbild.">
<div class="card-body">
<h5 class="card-title">{{ category.category_name }}</h5>
<p class="card-text">Überprüfen Sie Ihre Fähigkeiten und verbessern Sie Ihre Fähigkeiten!</p>
<p>/{{ category.kadai_number }}</p>
<a href="#" class="btn btn-primary">Let's Challenge</a>
</div>
</div>
</div>
{% endfor %}
In diesem Zustand wird nur das angezeigt, was in Model geschrieben ist, und es ist nicht möglich, das Modell der durch ManyToManyField verbundenen "Kadai" -Klasse anzuzeigen. Wie können Sie also die Modelle der "Kadai" -Klasse anzeigen, die durch ManyToManyFielf verbunden sind? Die Antwort lautet:
kadai_category.html
{% for kadai in category.kadai_name.all %}
<p>{{ kadai.kadai_name }}</p>
{% endfor %}
Werfen wir einen Blick auf das Gesamtbild.
kadai_category.html
{% for category in object_list %}
<div class="col-4 one-card">
<div class="card" style="width: 18rem;">
<img src="{{ category.category_thumbnail.url }}" height="300" alt="Es ist ein Miniaturbild.">
<div class="card-body">
<h5 class="card-title">{{ category.category_name }}</h5>
<p class="card-text">Überprüfen Sie Ihre Fähigkeiten und verbessern Sie Ihre Fähigkeiten!</p>
<p>/{{ category.kadai_number }}</p>
#Hier hinzufügen
{% for kadai in category.kadai_name.all %}
<p>{{ kadai.kadai_name }}</p>
{% endfor %}
<a href="#" class="btn btn-primary">Let's Challenge</a>
</div>
</div>
</div>
{% endfor %}
Ich werde erklären, wie man es schreibt. Bitte haben Sie Verständnis, wenn Sie das gesamte Bild oben betrachten.
{%für Zählervariable (jeder Name ist akzeptabel) in Large für Anweisungszählervariablenteil.Variablennamen, die durch ManyToManyField verbunden sind.all %}
<p>{{Zählervariable.Variablen des Modells, das Sie nach der Verbindung mit ManyToManyField laden möchten}}</p>
{% endfor %}
Ich weiß nicht, ob es gut kommuniziert wird, aber bitte vergleichen und reflektieren Sie es in Ihrem Projekt.
Recommended Posts