Dans cet article, j'écrirai comment afficher ce qui est connecté par ManyToManyField dans Template.
Vérifions d'abord le modèle.
models.py
class Kadai(models.Model):
class Meta:
verbose_name = 'Tâche'
verbose_name_plural = 'Tâche'
kadai_name = models.CharField(
verbose_name='Nom du problème',
max_length=100,
unique=True,
)
category_number = models.IntegerField(
verbose_name='Nombre de catégories de problèmes',
default=0,
)
kadai_thumbnail = models.ImageField(
verbose_name='Image du pouce',
upload_to='media',
)
def __str__(self):
return self.kadai_name
class KadaiCategory(models.Model):
class Meta:
verbose_name = 'Catégorie de problème'
verbose_name_plural = 'Catégorie de problème'
kadai_name = models.ManyToManyField(Kadai)
category_name = models.CharField(
verbose_name='Nom de catégorie',
max_length=100,
unique=True
)
kadai_number = models.IntegerField(
verbose_name='Nombre de tâches',
default=0
)
category_thumbnail = models.ImageField(
verbose_name='Image du pouce',
upload_to='media',
)
def __str__(self):
return self.category_name
C'est une vue d'ensemble, mais c'est long, je vais donc l'abréger un peu.
models.py
class Kadai(models.Model):
class Meta:
verbose_name = 'Tâche'
verbose_name_plural = 'Tâche'
kadai_name = models.CharField(
verbose_name='Nom du problème',
max_length=100,
unique=True,
)
.
.
.
def __str__(self):
return self.kadai_name
class KadaiCategory(models.Model):
class Meta:
verbose_name = 'Catégorie de problème'
verbose_name_plural = 'Catégorie de problème'
kadai_name = models.ManyToManyField(Kadai)
category_name = models.CharField(
verbose_name='Nom de catégorie',
max_length=100,
unique=True
)
.
.
.
def __str__(self):
return self.category_name
Cela rend un peu plus facile à voir. Pour le moment, la classe "Kadai" présente quelques défis, et la classe "Kadai Category" comporte plusieurs catégories. En d'autres termes, parce que c'est "plusieurs-à-plusieurs", j'utilise ManyToManyField. Regardons maintenant le modèle. Ce fichier HTML est connecté à "Kadai Category".
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="C'est une image miniature.">
<div class="card-body">
<h5 class="card-title">{{ category.category_name }}</h5>
<p class="card-text">Vérifiez vos compétences et améliorez vos compétences!</p>
<p>/{{ category.kadai_number }}</p>
<a href="#" class="btn btn-primary">Let's Challenge</a>
</div>
</div>
</div>
{% endfor %}
Dans cet état, il n'affiche que ce qui est écrit dans Model, et il n'est pas possible d'afficher le modèle de la classe "Kadai" connectée par ManyToManyField. Alors, comment pouvez-vous afficher les modèles de classe "Kadai" qui sont connectés par ManyToManyFielf? La réponse est la suivante.
kadai_category.html
{% for kadai in category.kadai_name.all %}
<p>{{ kadai.kadai_name }}</p>
{% endfor %}
Jetons un coup d'œil à la situation dans son ensemble.
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="C'est une image miniature.">
<div class="card-body">
<h5 class="card-title">{{ category.category_name }}</h5>
<p class="card-text">Vérifiez vos compétences et améliorez vos compétences!</p>
<p>/{{ category.kadai_number }}</p>
#Ajouter ici
{% 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 %}
Je vais vous expliquer comment l'écrire. Veuillez comprendre en regardant l'image entière ci-dessus.
{%pour la variable de compteur (tout nom est acceptable) dans Large pour la partie variable de compteur d'instruction.Noms de variables connectés par ManyToManyField.all %}
<p>{{Variable de compteur.Variables du modèle que vous souhaitez charger après la connexion à ManyToManyField}}</p>
{% endfor %}
Je ne sais pas si c'est bien communiqué, mais veuillez le comparer et le refléter dans votre projet.
Recommended Posts