【问题标题】:Labels for Django select form fieldDjango 选择表单字段的标签
【发布时间】:2012-08-12 11:16:30
【问题描述】:

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

示例模型可能如下所示

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

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

我似乎在官方 Django 文档上找不到任何指针,所以我想知道是否有人会提供帮助? :)

【问题讨论】:

  • 你不能改变模型的__unicode__ 方法来显示预期的内容吗?
  • 这将是显而易见的解决方案,但是整个网站都使用了 unicode 方法,因此仅显示序列号很重要。所以这不是一个选择,恐怕

标签: python django forms select labels


【解决方案1】:

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

【讨论】:

  • 这看起来有点像,可能会起作用。我去看看
  • 干净整洁。我喜欢。
猜你喜欢
  • 2018-12-12
  • 2014-01-19
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 2011-11-27
  • 1970-01-01
  • 1970-01-01
  • 2015-11-08
相关资源
最近更新 更多