Cer*_*rin 3 python django django-models django-admin
如何获得MultipleChoiceField()来正确加载初始值?
我有一个带CharField的Django模型,我将它作为一个MultipleChoiceField()在admin中呈现,因为我想将其值限制为一个或多个特定选择。
我的代码如下所示:
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
Run Code Online (Sandbox Code Playgroud)
看起来可以很好地渲染,但是当我选择值并保存时,新窗体将加载且未选择任何值。我已经确认该值已正确保存在数据库中,但是表单没有加载它,我不确定为什么。
基于一些类似的 问题,我尝试明确设置initial模型的已保存字段值,但这似乎没有效果。
我究竟做错了什么?
您需要在表单initial(字典)中而不是在字段中设置值:
if self.instance:
self.initial['my_text_field'] = self.instance.my_text_field
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1798 次 |
| 最近记录: |