Django ManyToManyField отображается как объект () вместо описания - PullRequest
0 голосов
/ 12 апреля 2020

Я использую Django ManyToManyField, чтобы мой пользователь мог выбирать кратные значения из флажков. Кажется, все это работает и сохраняется правильно, за исключением того, что на дисплее вместо описания отображается «Выбор объекта (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 записи: «Красный», «Зеленый», «Синий». (ie description = 'Red')

При отображении формы вместо поля с:

'Red'
'Green'
'Blue'

я вижу поле с:

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

Кто-нибудь знает, как заставить дисплей отображать описания вместо объекта?

Заранее спасибо.

1 Ответ

0 голосов
/ 12 апреля 2020

вам нужно запустить для l oop.

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

...