【发布时间】:2015-04-28 03:35:23
【问题描述】:
我正在 django 中初始化一个模型表单,然后添加一个多选字段,其中的选项显示为内联复选框,用于更新我的模型上的 Arrayfield。
型号代码:
Class Data(models.Model):
my_array = ArrayField(models.CharField(max_length=100, blank=True), null=True)
用于初始化与 my_array 的选择相对应的 Multichoice 字段的表单代码:-
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_array 对应的值,但未选中复选框。似乎我在表单上对 my_array 的定义没有使用 Model 中的 my_array 字段来预填充这些复选框。知道如何做到这一点吗?
【问题讨论】:
-
您是否在操作完成后保存视图中的值?这就是你的问题所在。
-
是的值被保存在视图的帖子中,当我查询我的模型时,我将这些值作为数组取回
-
实际上,您对未正确保存值的看法有些正确。经过仔细检查,我发现在我的模型中,选择不是保存为 ['A','B','C'] ,而是在单个对象中保存为 [['A,B,C']]。事实证明,这是由于在 PostGres db 上之前保存的数据上将 Charfield 转换为 Arrayfield 时出现的问题。感谢您的提示。