我对Python和Django非常陌生,因此遇到了这个问题。我想要做的是使用Django表单创建HTML Select标签的行为。必须使用数据库中的值填充此下拉列表/选择。
我已经拥有的是location = forms.ModelChoiceField(queryset = MyModel.objects.all())
,它确实为我提供了选择/下拉控件,但是我需要它来显示数据库中的一个值,并具有一个不同的实际值(两者都来自同一表的不同列)
我在HTML代码中的意思如下:
<select>
<option value="1">Berlin</option>
<option value="2">New York</option>
<option value="3">London</option>
<option value="4">Riga</option>
</select>
因此,使用表格,我会看到城市的名称,例如。伦敦,但是当它被选中并提交时,我在数据库中插入3。
期待您的建议。
您可以尝试这个
在forms.py
class your_form(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(your_form, self).__init__(*args, **kwargs)
self.fields['location'].label_from_instance = self.label_from_instance
@staticmethod
def label_from_instance(obj):
return "Label %s" % obj.name
from django.forms import ModelChoiceField
class MyModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
return "My Object #%i" % obj.id
请参阅this