to_field_name
This optional argument is used to specify the field to use as the value of the choices in the field’s widget. Be sure it’s a unique field for the model, otherwise the selected value could match more than one object. By default it is set to None
, in which case the primary key of each object will be used. For example:
1 2 | # No custom to_field_name field1 = forms.ModelChoiceField(queryset = ...) |
would yield:
1 2 3 4 5 | < select id = "id_field1" name = "field1" > < option value = "obj1.pk" >Object1</ option > < option value = "obj2.pk" >Object2</ option > ... </ select > |
and:
1 2 | # to_field_name provided field2 = forms.ModelChoiceField(queryset = ..., to_field_name = "name" ) |
would yield:
1 2 3 4 5 | < select id = "id_field2" name = "field2" > < option value = "obj1.name" >Object1</ option > < option value = "obj2.name" >Object2</ option > ... </ select > |
The __str__
(__unicode__
on Python 2) method of the model will be called to generate string representations of the objects for use in the field’s choices; to provide customized representations, subclass ModelChoiceField
and override label_from_instance
. This method will receive a model object, and should return a string suitable for representing it. For example:
1 2 3 4 5 | from django.forms import ModelChoiceField class MyModelChoiceField(ModelChoiceField): def label_from_instance( self , obj): return "My Object #%i" % obj. id |
Please login to continue.