Python Django:ManyToManyField在我的模板上显示为空
我在使用Django的角色配置文件模板中显示ManyToManyField时遇到问题 模板必须显示一个化身,以及一些关于角色的信息,包括这个角色加入的协会的列表。但是,当我试图显示该列表时,它似乎是空的。我查看了我的站点管理页面,信息就在那里,所以我确认数据可以显示在我的模板中。我只是不知道怎么做。我怎么办 这些是我的模型:Python Django:ManyToManyField在我的模板上显示为空,python,django,django-models,django-templates,django-views,Python,Django,Django Models,Django Templates,Django Views,我在使用Django的角色配置文件模板中显示ManyToManyField时遇到问题 模板必须显示一个化身,以及一些关于角色的信息,包括这个角色加入的协会的列表。但是,当我试图显示该列表时,它似乎是空的。我查看了我的站点管理页面,信息就在那里,所以我确认数据可以显示在我的模板中。我只是不知道怎么做。我怎么办 这些是我的模型: """ Modelos de la aplicación de personajes """ from django.db import models class Gui
""" 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)+'. '
My 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)
和my template.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 %}
{%extends'base.html%}
{%block content%}
{{profile.character_name}的配置文件
{%if profile.avatar%}
{%else%}
这里没有可显示的化身
{%endif%}
问询处
名称:{{profile.character\u Name}
级别:{{profile.Level}
种族:{{profile.Race}
- 性别:{{profile.Gender}
作业:{{profile.Job}
-
公会:
{%g在公会%}
{{g}
{%endfor%}
版权所有©2020
{%endblock%}
非常感谢 我认为问题在于您的
主键
,因为在数据库中,当删除一行并重新创建一行时,主键不会从1重新启动
例如,在视图函数中尝试以下操作:
profile = Character.objects.get(character_name=character_name)
希望能有所帮助我终于成功了。还有另一种观点引起了冲突
form.save(commit=False)
可能会导致MtM关系出现一些问题,因此我将其更改为True。您是否尝试过将guilds部分保留在视图中,只在profile.character\u guilds.all%}{{g}{%endfor%}@errorinpersona yes,同样的情况:模板中没有显示数据。您解决了问题还是需要进一步帮助?@errorinpersona我的问题已经解决了。无论如何,谢谢:)尝试了一下,并将这行代码添加到模板:{{{profile.character\u guilds.all}
。结果是一个空查询集。这是什么意思?协会仍然出现在管理网站上。我不知道怎么了,对不起!!在您的查看函数中,在下面的profile=Character.objects.get(pk=pk)
尝试示例:print(profile.Character\u name)
并查看它在命令行中显示了什么我做了什么,我得到了以下内容:Character.Guild.None