Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:ManyToManyField在我的模板上显示为空_Python_Django_Django Models_Django Templates_Django Views - Fatal编程技术网

Python 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

我在使用Django的角色配置文件模板中显示ManyToManyField时遇到问题

模板必须显示一个化身,以及一些关于角色的信息,包括这个角色加入的协会的列表。但是,当我试图显示该列表时,它似乎是空的。我查看了我的站点管理页面,信息就在那里,所以我确认数据可以显示在我的模板中。我只是不知道怎么做。我怎么办

这些是我的模型:

""" 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