У меня проблема с отображением ManyToManyField в шаблоне профиля персонажа с использованием Django.
В шаблоне должен отображаться аватар, а также некоторая информация о персонаже, включая список гильдий этого персонажа. присоединился Но когда я пытаюсь отобразить этот список, он кажется пустым. Я заглянул на страницу администрирования своего сайта, и эта информация там есть, поэтому у меня есть подтверждение, что данные могут отображаться в моем шаблоне. Я просто не знаю как. Как я могу справиться с этим?
Это мои модели:
""" Modelos de la aplicación de personajes """
from django.db import models
class Guild(models.Model):
""" Modelo del clan """
guild_name = models.CharField(max_length=25)
rank = models.PositiveSmallIntegerField()
def __str__(self):
return self.guild_name
class Character(models.Model):
""" Modelo del personaje """
character_name = models.CharField(max_length=25)
level = models.PositiveSmallIntegerField()
race = models.CharField(max_length=25)
gender = models.CharField(max_length=25)
job = models.CharField(max_length=25)
avatar = models.ImageField(upload_to='', blank=True)
character_guilds = models.ManyToManyField(Guild, blank=True)
def __str__(self):
return self.character_name+': '+self.race+' '+self.job+' level '+str(self.level)+'. '
Мой файл view.py:
def characterprofile(request, pk):
""" Método para mostrar el perfil de un personaje """
template = '../templates/character/characterProfile.html'
profile = Character.objects.get(pk=pk)
guilds = profile.character_guilds.all()
context = {
'profile': profile,
'guilds': guilds
}
return render (request, template, context)
И мой шаблон. html:
{% extends 'base.html' %}
{% block content %}
<header>
<h2>{{ profile.character_name }}'s profile</h2>
</header>
<nav class="nav nav-pills nav-justified">
<a class="nav-item nav-link" href="{% url 'characters' %}">Return</a>
</nav>
<br>
<div class="container">
<div class="container">
{% if profile.avatar %}
<img class="rounded" src="{{ profile.avatar.url }}" width="184" height="184">
{% else %}
<p>There is no avatar to display here.</p>
{% endif %}
</div>
<br>
<h4>Information</h4>
<ul class="list-group list-group-flush-sm">
<li class="list-group-item">Name: {{ profile.character_name }}</li>
<li class="list-group-item">Level: {{ profile.level }}</li>
<li class="list-group-item">Race: {{ profile.race }}</li>
<li class="list-group-item">Gender: {{ profile.gender }}</li>
<li class="list-group-item">Job: {{ profile.job }}</li>
<li class="list-group-item">
Guilds:
{% for g in guilds %}
{{ g }}
{%endfor%}
</li>
</ul>
<br>
</div>
<br>
<footer>
<span>Copyright© 2020</span>
</footer>
{% endblock %}
Большое спасибо заранее!