首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MultipleChoiceField不显示Django Admin中存储的值

MultipleChoiceField不显示Django Admin中存储的值
EN

Stack Overflow用户
提问于 2012-02-29 03:49:08
回答 2查看 2.5K关注 0票数 5

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

我有一个带有CharField的Django模型,我在管理中将其呈现为一个MultipleChoiceField(),因为我想将它的值限制为一个或多个特定的选择。

我的代码看起来像这样:

代码语言:javascript
复制
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值,但似乎没有效果。

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-29 04:38:45

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

代码语言:javascript
复制
if self.instance:
    self.initial['my_text_field'] = self.instance.my_text_field
票数 5
EN

Stack Overflow用户

发布于 2018-12-06 07:06:56

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

代码语言:javascript
复制
def __init__(self, *args, **kwargs):
    super(MyModelInlineForm, self).__init__(*args, **kwargs)
    self.initial['my_text_field'] = eval(self.initial['my_text_field'])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9488671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档