【问题标题】:Django - change select items displayDjango - 更改选择项目显示
【发布时间】:2011-10-08 22:42:45
【问题描述】:

我使用ModelForm。其中一个字段是:

repertoire = models.ForeignKey(Repertoire)

我需要更改它的显示类型。我不想在显示中使用 __str__(或 Python 2 中的 __unicode__),而是想显示曲目的名称和日期。

如何使用ModelForm 做到这一点?

【问题讨论】:

    标签: python django django-forms


    【解决方案1】:

    子类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())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      • 2013-08-17
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多