Django - 更改选择项显示
我在使用 ModelForm
。其中有一个字段是:
repertoire = models.ForeignKey(Repertoire)
我想改变这个字段的显示方式。现在它是用 __str__
(在 Python 2 中是 __unicode__
)来显示的,但我想显示的是名字和日期。
我该如何在 ModelForm
中做到这一点呢?
1 个回答
6
你可以创建一个新的类,继承自ModelChoiceField
,然后重写里面的一个叫label_from_instance
的方法,让它返回你想要的内容,比如乐谱的名称和日期。接着,在你的ModelForm
里使用这个新的字段。
from django import forms
class RepertoireModelChoiceField(forms.ModelChoiceField):
def label_from_instance(self, obj):
return "%s - %s" % (obj.name, obj.date)
class MyModelForm(forms.ModelForm):
repertoire = RepertoireModelChoiceField(queryset=Repertoire.objects.all())