Django 模板中的 ListField 保存功能无效

2024-04-20 04:54:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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_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保存空列表,而不是传递给它的列表。我甚至可以:

^{pr2}$

它会打印出一个列表[你说什么,你说什么,…]。在

你知道为什么第一个方法不能正确保存列表吗?提前谢谢!在


Tags: 方法信息jsonids列表datalineorder
2条回答

当ListField添加到模型中时,需要告诉它如何显示为表单,以及如何将输入作为表单输入。在我的模型中,我使用json.loads()和json.dumps文件将文本传输到表单()中。因此,当ModelForm接受一个表单作为输入并试图保存它时,它需要一个字符串,而不是一个原始列表。在

我想你需要换一下这条线

polygon.data['line_ids'] = json.loads(polygon.data['line_ids'])

用这个

^{pr2}$

相关问题 更多 >