Django ManyToManyField呈现为object()而不是描述

问题描述 投票:0回答:1

我正在使用Django的ManyToManyField,以便我的用户可以从复选框中选择倍数。除了显示的是“ Choice Object(1)”(而不是描述),所有这些似乎都可以正常工作并保存正确。

models.py:

class Choice(models.Model):
    description = models.CharField(max_length=20)
    def __unicode__(self):
        return unicode(self.description)

class Person(models.Model):
    name = models.CharField(max_lenght=20)
    choice = models.ManyToManyField(Choices) #disciplines offered by an academy
    def __unicode__(self):
        return self.name

forms.py

class PersonForm(models.ModelForm):
    class Meta:
        model=Person
        fields=('name','choice')

person_update_form.html

{% block content %}
  <form method="post" enctype="multipart/form-data" novalidate>
    {% csrf_token %}
    {{ form.name }}
    {{ form.choice }}

    <button type="submit" class="btn btn-success">Save Person</button>
  </form>
{% endblock %}

“我的选择”数据库有3个条目:“红色”,“绿色”,“蓝色”。 (即说明=“红色”)

当我渲染表单时,而不是看到带有以下内容的框:

'Red'
'Green'
'Blue'

我看到一个带有以下内容的框:

Choice Object(1)
Choice Object(2)
Choice Object(3)

任何人都知道如何使显示内容代替对象显示描述吗?

提前感谢。

python django forms model manytomanyfield
1个回答
0
投票

您需要运行一个for循环。

{% for foo in form.choice.all %} {{ foo }} {% endfor %}

© www.soinside.com 2019 - 2024. All rights reserved.