Python 如何实现用数据库中的值填充的下拉列表

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>

我对Python和Django非常陌生,因此有这个问题。我想做的是用Django表单创建一个HTML选择标记的行为。必须使用数据库中的值填充此下拉/选择

我已经有了
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