如何让MultipleChoiceField()正确加载初始值?
我有一个带有CharField的Django模型,我在管理中将其呈现为一个MultipleChoiceField(),因为我想将它的值限制为一个或多个特定的选择。
我的代码看起来像这样:
class MyModelInlineForm(ModelForm):
my_text_field = forms.MultipleChoiceField(required=False)
def __init__(self, *args, **kwargs):
super(MyModelInlineForm, self).__init__(*args, **kwargs)
self.fields['my_text_field'].choices = get_choices(self.instance)
if self.instance:
self.fields['my_text_field'].initial = self.instance.my_text_field
class MyModelInline(admin.TabularInline):
model = MyModel
form = MyModelInlineForm
extra = 0
它看起来呈现得很好,但是当我选择值并保存时,新表单加载时没有选择值。我已经确认值被正确地保存在数据库中,但是表单没有加载它,我不确定为什么。
基于一些similar questions,我尝试显式地设置我的模型的saved字段的initial
值,但似乎没有效果。
我做错了什么?
发布于 2012-02-29 04:38:45
您需要在表单的initial
(字典)中设置值,而不是在字段的:
if self.instance:
self.initial['my_text_field'] = self.instance.my_text_field
发布于 2018-12-06 07:06:56
您需要在表单的首字母(字典)中设置该值
def __init__(self, *args, **kwargs):
super(MyModelInlineForm, self).__init__(*args, **kwargs)
self.initial['my_text_field'] = eval(self.initial['my_text_field'])
https://stackoverflow.com/questions/9488671
复制相似问题