Python 列表字段未保存在Django ModelForm中
我在Django中有两个包含列表字段的模型:Polygon和PolygonForm以及Line和LineForm。当我从用户那里获得一堆信息时,我会使用以下方法创建其中的新信息:Python 列表字段未保存在Django ModelForm中,python,django,django-models,django-forms,listfield,Python,Django,Django Models,Django Forms,Listfield,我在Django中有两个包含列表字段的模型:Polygon和PolygonForm以及Line和LineForm。当我从用户那里获得一堆信息时,我会使用以下方法创建其中的新信息: partialPolygon = Polygon(user=1001) polygon = PolygonForm(request.POST.copy(), instance=partialPolygon) polygon.data['line_ids'] = json.loads(polygon.data['line
partialPolygon = Polygon(user=1001)
polygon = PolygonForm(request.POST.copy(), instance=partialPolygon)
polygon.data['line_ids'] = json.loads(polygon.data['line_ids'])
polygon.data['order'] = json.loads(polygon.data['order'])
newPoly = polygone.save()
newLine = Line(line_id=lineId,
point_list=line['point_list'],
...
polygons=sect['polygons'],
user=1001)
newLine.save()
这里的第二种方法非常有效。一切都保存得很好。第一种方法在大多数情况下都很有效,但总是为ListFields而不是传递给它的列表保存空列表。我甚至可以做到:
print polygon.data['line_ids']
然后它打印出一个列表[u'bla-bla',u'bla-bla',…]
你知道为什么第一种方法不能正确保存列表吗?提前谢谢 我想你需要交换这条线
polygon.data['line_ids'] = json.loads(polygon.data['line_ids'])
用这个
polygon.line_ids = json.loads(polygon.data['line_ids'])
将ListField添加到模型时,需要告诉它如何显示为表单,并将输入作为表单输入。在我的模型中,我使用json.loads和json.dumps将列表转换为文本以进行表单输入。因此,当ModelForm将表单作为输入并试图保存它时,它需要的是字符串,而不是原始列表。这不会改变任何东西。我认为任何一种方法都可以。试过了,也没用