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

Django ManyToManyField renders as object() instead of description

我正在使用 Django 的 ManyToManyField,以便我的用户可以从复选框中生成 select 倍数。这一切似乎都在正常工作和保存,除了显示显示 "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'。 (即描述='Red')

当我呈现我的表单时,而不是看到一个框:

'Red'
'Green'
'Blue'

我看到一个盒子:

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

有人知道如何让显示器显示描述而不是对象吗?

提前致谢。

你需要运行一个for循环。

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