Вы можете переопределить label_from_instance
на ModelChoiceField
после его создания.
self.fields['name'] = forms.ModelChoiceField(queryset = Options.objects.filter(option_type = s), label = field_label, required=False)
self.fields['name'].label_from_instance = lambda obj: "{0} {1}".format(obj.name, obj.color)
Обновление на основе комментария для отображения цвета только один раз:
class MyModelChoiceField(forms.ModelChoiceField):
def __init__(self, *args, **kwargs):
super(MyModelChoiceField, self).__init__(self, *args, **kwargs)
self.shown_colors = []
def label_from_instance(self, obj):
if obj.color not in self.shown_colors:
self.shown_colors.append(obj.color)
return "{0} {1}".format(obj.name, obj.color)
else:
return obj.name
self.fields['name'] = MyModelChoiceField(queryset = Options.objects.filter(option_type = s), label = field_label, required=False)