使用实例数据预填充Django表单ChoiceField

使用实例数据预填充Django表单ChoiceField,django,django-forms,Django,Django Forms,预填充Django表单所需的帮助:我有一个更新UserProfile模型的表单,当加载表单时,我希望它预填充现有的UserProfile数据。非常简单,可以将实例传递给表单。但是,似乎带有选项的字段(在HTML中显示为select下拉元素)并没有预先填充实例数据,而是默认为'-------------' 我曾尝试手动设置特定表单的初始值(例如国家/地区),但它无法进入HTML form=UserProfileForm(实例=user\u profile) form.fields['country

预填充Django表单所需的帮助:我有一个更新UserProfile模型的表单,当加载表单时,我希望它预填充现有的UserProfile数据。非常简单,可以将实例传递给表单。但是,似乎带有选项的字段(在HTML中显示为
select
下拉元素)并没有预先填充实例数据,而是默认为'-------------'

我曾尝试手动设置特定表单的初始值(例如国家/地区),但它无法进入HTML

form=UserProfileForm(实例=user\u profile)
form.fields['country'].首字母='GBR'
我相信我可以创造一个复杂的工作环境,让当前的国家在前端被选中,但感觉在Django应该是可能的。我在其他问题上看不到任何解决方案,因此如果您能提供帮助,我将不胜感激

您可以:

如果
country
字段应该从
user\u profile
数据填充,那么您可以定义如下表单(假设
country
UserProfile
类中的字段)

为什么你正在做的事情不起作用?

您正在使用:

form.fields['country'].initial = 'GBR'
这对我来说是行不通的
form=UserProfileForm(instance=user\u profile)
将返回一个有界表单

发件人:

initial
参数用于指定在未绑定的
表单中呈现此
字段时要使用的初始值

要指定动态初始数据,请参见参数

你可以:

如果
country
字段应该从
user\u profile
数据填充,那么您可以定义如下表单(假设
country
UserProfile
类中的字段)

为什么你正在做的事情不起作用?

您正在使用:

form.fields['country'].initial = 'GBR'
这对我来说是行不通的
form=UserProfileForm(instance=user\u profile)
将返回一个有界表单

发件人:

initial
参数用于指定在未绑定的
表单中呈现此
字段时要使用的初始值

要指定动态初始数据,请参见参数


您可以分享您制作表单的模型吗?该模型对用户来说只是一个FK,几个字符域和国家域(只有这些字段可以选择,所有其他字段都可以正常工作)以及
选项的结构方式很重要。那么,你至少可以分享这一部分吗?你可以分享你为之制作表单的模型吗?该模型对用户来说只是一个FK,几个字符域和国家域(只有这些字段可以选择,并且所有其他字段都可以正常工作)那么
选择
的结构方式很重要。那么,你至少可以共享这个部分吗?它将默认值设置为始终为“GBR”,并且不会动态地获取实例字段值,然后使用
initial={'country':somevariable}
来设置它。这与问题中的方法相同,但不会更改输出-没有选择“somevariable”,这不一样。您正在执行
self.fields['country'].initial=somevariable
。您应该执行self.initial['country']=somevariable
。你需要填充。你是对的,我应该说无论是
initial={'country':'GBR'}
还是
self.fields['country'].initial=somevariable
都不能按预期工作-使用
self.initial['country']=somevariable
,谢谢!这将默认值设置为始终为“GBR”,并且不会动态获取实例字段值,然后使用
initial={'country':somevariable}
进行设置。这与问题中的方法相同,但不会更改输出-未选择“somevariable”否,它不相同。您正在执行
self.fields['country'].initial=somevariable
。您应该执行self.initial['country']=somevariable
。你需要填充。你是对的,我应该说无论是
initial={'country':'GBR'}
还是
self.fields['country'].initial=somevariable
都不能按预期工作-使用
self.initial['country']=somevariable
,谢谢!
form.fields['country'].initial = 'GBR'