Django的标签选择表单字段

时间:2012-08-16 06:04:33

标签: python django forms select labels

我正在使用ModelForms为网站制作表单,但我想要更多地控制选择框中显示的文本。

示例模型可能如下所示

class Test(models.Model)
    ID = IntegerField()
    Label = CharacterField()
    recipient = ForeignKey(Person)
    product = ForeignKey(Product)

所以,我的问题是,当我创建这个模型的modelForm时,外键字段被制作成选择字段,它具有底层值中对象的主键,显示的文本是来自对象__unicode__()方法。在这种情况下,仅显示产品ID(这是一个序列号,这对用户没有意义)。我希望能够制作一个自定义标签,如“[serial],[product name]”。

我似乎无法找到关于官方Django文档的任何指示,所以我想知道是否有人会帮忙? :)

1 个答案:

答案 0 :(得分:8)

查看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