MultipleChoiceField不显示Django Admin中存储的值

2024-10-01 17:41:22 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使MultipleChoiceField()正确加载初始值?在

我有一个带有CharField的Django模型,我在admin中将其呈现为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

它看起来很好,但是当我选择值并保存时,新表单加载时没有选择任何值。我已经确认该值正确地保存在数据库中,但是表单没有加载它,我不确定原因。在

基于一些similarquestions,我尝试显式地设置模型保存字段的initial值,但这似乎没有效果。在

我做错什么了?在


Tags: instancetext模型selffieldfieldsadmininit
2条回答

您需要在表单的首字母(字典)中设置值

def __init__(self, *args, **kwargs):
    super(MyModelInlineForm, self).__init__(*args, **kwargs)
    self.initial['my_text_field'] = eval(self.initial['my_text_field'])

您需要在表单的initial(字典)中设置值,而不是字段的值:

if self.instance:
    self.initial['my_text_field'] = self.instance.my_text_field

相关问题 更多 >

    热门问题