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