- モデルの
__str__
メソッドをオーバーライドするか、選択肢として表示したいフィールドに対して__str__
メソッドを定義します。例えば、次のようなモデルがあるとします。
class MyModel(models.Model):
name = models.CharField(max_length=100)
# 他のフィールドも定義されているとします
def __str__(self):
return self.name
上記の例では、name
フィールドの値が選択肢として表示されるようになります。
- フォームクラスでModelChoiceFieldを使用し、
to_field_name
を指定します。to_field_name
は、モデルのフィールド名を指定することで、そのフィールドの値を選択肢として使用します。例えば、次のようなフォームクラスを作成します。
from django import forms
from .models import MyModel
class MyForm(forms.Form):
my_field = forms.ModelChoiceField(
queryset=MyModel.objects.all(),
to_field_name='name'
)
上記の例では、my_field
フィールドの選択肢として、MyModel
のname
フィールドの値が使用されます。
これで、ModelChoiceFieldの選択肢としてIDではなく他のフィールドの値を表示することができます。選択された値は、通常の方法で取得できます。