簡體   English   中英

如何在Django下拉菜單中設置文本?

[英]How to set text in Django 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

是啊。 只需使用unicode而不是您所到之處。

def __unicode__(self):

文檔所述 ,您應該繼承默認的語言字段的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'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM