在Django中获取ModelChoiceField中的更多信息

时间:2014-07-17 09:42:58

标签: django django-models django-forms django-templates django-views

我有一个Django形式的ModelChoiceField。功能正常,但当我循环遍历模板中的所有选项时,我需要有关对象的更多信息,而不仅仅是Model.__str__()的值。

我试过了

{% for radio in form.field %}
    <tr>
        <td class="text-center">{{ radio.tag }}</td>
        <td>{{ radio.choice_label }}</td>
    </tr>
{% endfor %}

但我无法从对象中获取更多信息(例如radio.nameradio.ageradio.country)。

1 个答案:

答案 0 :(得分:1)

来自文档:

  

将调用模型的 str (Python 2上的 unicode )方法,以生成对象的字符串表示形式,以便在字段的选择中使用;提供自定义表示,子类ModelChoiceField和覆盖label_from_instance。此方法将接收模型对象,并应返回适合表示它的字符串。

来自文档的一个例子:

from django.forms import ModelChoiceField

class MyModelChoiceField(ModelChoiceField):
    def label_from_instance(self, obj):
        return "My Object #%i" % obj.id