我正在使用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)
任何人都知道如何使显示内容代替对象显示描述吗?
提前感谢。
您需要运行一个for循环。
{% for foo in form.choice.all %}
{{ foo }}
{% endfor %}