Django Form で ModelChoiceField を使用する際、name の出力を変更する。


ModelChoiceField を使用してRadio ボタンを画面表示したところ、
nameが、{Model名称} Object と画面表示され表示名称を変更できず、
変更方法を調べておりました。

参考サイト


変更方法

  • forms.pyの記述抜粋
    from analyze_metrics_view.models import ToolChoice
    tool_choice = forms.ModelChoiceField(
        label='Category',
        queryset=ToolChoice.objects.all(),
        to_field_name='value',
        widget=forms.RadioSelect(
            attrs={'onchange': 'Myjs.changeCategoryChoices(this.value,' + json.dumps(
                get_category_choicese_relations()) + ');'}),
        required=True,
        empty_label=None,
    )
  • ToolChoice というModelがあるとして、models.py の記述
from django.db import models

class ToolChoice(models.Model):
    value = models.CharField(max_length=2)
    name = models.CharField(max_length=30)

    def __unicode__(self):
        return self.name

    def __str__(self):
        return self.name

python2では__unicode__
python3では、__str__ で、
modelの文字列表現を指定することができて、ラベル名に反映されます。
別の方法もあるっぽいですが、とりあえずは今回はこれで事足りました。
以上です。

コメント

カテゴリー