django中带有复选框的Multichoicefield,带有模型表单

django中带有复选框的Multichoicefield,带有模型表单,django,forms,model,Django,Forms,Model,我正在django中初始化一个模型表单,然后添加一个multichoicefield,其中的选项显示为内联复选框,用于更新模型上的Arrayfield 型号代码: Class Data(models.Model): my_array = ArrayField(models.CharField(max_length=100, blank=True), null=True) 用于初始化与my_数组的选项相对应的多选字段的表单代码:- class DataForm(ModelForm):

我正在django中初始化一个模型表单,然后添加一个multichoicefield,其中的选项显示为内联复选框,用于更新模型上的Arrayfield

型号代码:

Class Data(models.Model): 
    my_array = ArrayField(models.CharField(max_length=100, blank=True), null=True)
用于初始化与my_数组的选项相对应的多选字段的表单代码:-

class DataForm(ModelForm):
    class Meta:
        model = models.Data
        fields = ('my_array')
    my_choice = (('','None'), ('A','A'), ('B','B'), ('C','C'))
    my_array = forms.MultipleChoiceField(choices=my_choice , widget=forms.CheckboxSelectMultiple(), required=False)
选中的值已正确保存到ArrayField“my_array”中。在此表单上检索这些值时遇到问题


我需要这个多选字段在检索以前填写的表单时根据保存的模型检查(选择)值。当前,当检索模型时,我将获得与我的_数组相对应的值,但未选中复选框。我对表单上my_数组的定义似乎没有使用模型中的my_数组字段来预先填充这些复选框。你知道怎么做吗?

仔细观察后,我注意到我的模型上的一些值被保存为[['A','B','C']],而不是['A','B','C'],这就是为什么从模型中实例化表单时无法选择这些值的原因

这是因为在某个时候,我将模型上的_数组从Charfield转换为ArrayField,并相应地在Postgresql上运行一个脚本来转换现有值


我仍然不知道为什么,但其中一些转换后的值在单个数组对象中以逗号分隔,而不是拆分为多个数组对象。我希望这将有助于避免再次遇到此问题,如果我找到了以正确方式进行这些转换的修复方法,我将在此处发布。

操作完成后是否在视图中保存值?这就是你的问题所在。是的,值会保存在视图的帖子中,当我查询我的模型时,我会将这些值作为数组返回。实际上,关于值未正确保存的问题,你说得有些对。仔细检查后,我发现在我的模型中,一些选项不是保存为['A','B','C'],而是保存为[['A,B,C']]在单个对象中。事实证明,这是由于在先前保存的数据上将PostGres db上的Charfield转换为Arrayfield时出现问题。谢谢你的提示。