如何在Django下拉菜单中设置文本?

时间:2015-12-18 19:07:37

标签: python django html5 drop-down-menu

是否可以为下拉菜单中的每个项目设置标签?它显示模块实例的__str__输出 - 表中的项。

class LanguageDropDownForm(forms.Form):
    languages = forms.ModelChoiceField(queryset=Languages.objects.all().order_by('language_shortcut'))

Models.py:

class Languages(models.Model):
    language = models.CharField(max_length=100)
    language_shortcut = models.CharField(max_length=3)
    price_per_word = models.FloatField()

    def __str__(self):
        return 'SC: {} Lang: {} PPW: {}'.format(self.language_shortcut,self.language,self.price_per_word)

你能给我一个建议吗?

我希望仅举例model.languagemodel.name代替__str__方法,例如在admin中有用。

2 个答案:

答案 0 :(得分:0)

是的。只需使用 unicode ,而不是你在那里。

def __unicode__(self):

答案 1 :(得分:0)

正如doc所述,您应该继承语言字段的默认ModelChoiceField并覆盖label_from_instance方法:

class LanguageModelChoiceField(forms.ModelChoiceField):
    def label_from_instance(self, obj):
        return 'SC: {} Lang: {} PPW: {}'.format(obj.language_shortcut,
                                                obj.language,
                                                obj.price_per_word)

然后在您的表单中执行:

class LanguageDropDownForm(forms.Form):
    languages = LanguageModelChoiceField(queryset=Languages.objects.all().order_by('language_shortcut'))