schema_fld是对象列表,如何在Select标记中显示自定义名称。 我想将值附加到模型的显示字符串。如果显示字符串是“ Apple”,那么我想在用户界面中将其显示为“ Fruit-Apple”。
我不能在模型,因为它是在应用程序的其他部分被用于使用(的 STR )方法。我创建在模型“domval_display”的方法而调用该从HTML是行不通的。
<table class='no_error'>
<thead>
<tr>
<th>Schema Fields</th>
</tr>
</thead>
<tr>
<td>
{% for hidden in form.hidden_fields %} {{ hidden }} {% endfor %} {{ form.schema_fld.errors.as_ul }}{{ form.schema_fld }}
</td>
</tr>
{% endfor %}
</table>
class SchemaFld(models.Model):
schema_fld_id = models.AutoField(primary_key=True)
fld_name = models.CharField(max_length=256)
schema = models.ForeignKey(TSchema, models.DO_NOTHING)
def domval_display(self):
return 'Fruit-'+str(self.fld_name)
def __str__(self):
return str(str(self.fld_name))
class MappingSetForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
asset = kwargs.pop('asset', None)
super(MappingSetForm, self).__init__(*args, **kwargs)
self.fields['schema_fld'].queryset =self.fields['schema_fld'].queryset.filter(schema_id=asset.src_schema.schema_id)
class Meta:
model = MappingSet
fields = [ 'schema_fld']
widgets = {
'updated_by': forms.HiddenInput(),
}
答案 0 :(得分:2)
如the docs for ModelChoiceField所示,您需要定义一个实现label_from_instance
方法的自定义字段,并在您的表单中使用它。
class FruitModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
return obj.domval_display() # or just do the string formatting here
class MappingSetForm(forms.ModelForm):
schema_fld = forms.FruitModelChoiceField(queryset=SchemaFld.objecst.none())