Django选择表单字段的标签
问题描述:
我正在使用ModelForms为网站创建表单,但我希望更多地控制选择框中显示的文本。Django选择表单字段的标签
一个例子模型可能看起来像这样
class Test(models.Model)
ID = IntegerField()
Label = CharacterField()
recipient = ForeignKey(Person)
product = ForeignKey(Product)
所以,我的问题是,当我提出这个模型的的ModelForm,外键字段被拍成选择字段,具有的主键基础值中的对象以及显示的文本是来自对象__unicode__()
方法的文本。在这种情况下,只显示产品ID(这是一个序列号码,这对用户来说没有意义)。我希望能够制作一个自定义标签,如“[序列号],[产品名称]”。
我似乎无法找到正式的Django文档上的任何指针,所以我想知道是否有人会帮忙? :)
答
检查出Django docs regarding the ModelChoiceField。报价:
模型的
__unicode__
方法将被调用来生成字符串在该领域的选择使用对象的 表示;到 提供自定义的表示,子类ModelChoiceField和 覆盖label_from_instance。此方法将收到一个模型对象, 并应返回一个适合于表示它的字符串。例如:class MyModelChoiceField(ModelChoiceField): def label_from_instance(self, obj): return "My Object #%i" % obj.id
不能更改'模型显示什么预期的__unicode__'方法? – Rohan 2012-08-16 06:14:42
这将是显而易见的解决方案,但unicode方法在整个网站中使用很多,重要的是它只显示序列。所以这不是一种选择,我很害怕 – Eldamir 2012-08-16 06:23:47