您如何获得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

看起来可以很好地渲染,但是当我选择值并保存时,新表单将加载且未选择任何值。我已经确认该值已正确保存在数据库中,但是表单没有加载它,我不确定为什么。

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

我究竟做错了什么?

最佳答案

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

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

关于python - MultipleChoiceField在Django Admin中未显示存储的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9488671/

10-12 22:06