Python 如何实现用数据库中的值填充的下拉列表
我对Python和Django非常陌生,因此有这个问题。我想做的是用Django表单创建一个HTML选择标记的行为。必须使用数据库中的值填充此下拉/选择 我已经有了Python 如何实现用数据库中的值填充的下拉列表,python,html,django,forms,pgadmin-4,Python,Html,Django,Forms,Pgadmin 4,我对Python和Django非常陌生,因此有这个问题。我想做的是用Django表单创建一个HTML选择标记的行为。必须使用数据库中的值填充此下拉/选择 我已经有了location=forms.modelcoocefield(queryset=MyModel.objects.all()),它确实给了我一个select/drowpdown控件,但我需要它显示数据库中的一个值,并将另一个值作为实际值(都来自同一个表,只是不同的列) 我在HTML代码中的意思如下所示: <select>
location=forms.modelcoocefield(queryset=MyModel.objects.all())
,它确实给了我一个select/drowpdown控件,但我需要它显示数据库中的一个值,并将另一个值作为实际值(都来自同一个表,只是不同的列)
我在HTML代码中的意思如下所示:
<select>
<option value="1">Berlin</option>
<option value="2">New York</option>
<option value="3">London</option>
<option value="4">Riga</option>
</select>
因此,我有一个对另一个表的id引用,我想从中获取位置的名称,并用这些名称填充select/下拉列表。当用户进行选择时,不应使用名称,而应使用整数/id。这有意义吗?您可以尝试此方法
在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
或
请参阅显示您的型号。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