我正在django中初始化一个模型表单,然后添加一个multichoicefield,其中的选项显示为内联复选框,用于更新模型上的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'中。我在此表单上检索这些值时遇到问题。
我需要这个multichoicefield在检索先前填写的表单时,根据保存的模型检查(选中)值。目前,当检索模型时,我获得与my_array相对应的值,但不检查复选框。似乎我在表单上定义my_array并不是使用Model中的my_array字段来预填充这些复选框。关于如何做到这一点的任何想法?
答案 0 :(得分:0)
仔细观察后,我注意到我的模型上的某些值被保存为[[' A',' B'' C']]而不是[ ' A' B'' C']这就是为什么从模型中为这些实例化表单时无法选择这些值的原因。
发生这种情况是因为在某些时候我将模型上的my_array从Charfield转换为ArrayField,并相应地在Postgresql上运行了一个脚本来转换现有值。
我仍然不确定为什么这些转换后的值会在单个数组对象中以逗号分隔,而不是分成多个数组对象。我希望这有助于避免再次遇到此问题,如果我找到了以正确的方式进行这些转换的修复程序,我将在此处发布。