10

我需要一个Django 表单字段,它将获取一个字符串列表。

我将遍历这个列表并为每个字符串创建一个新的模型对象。

我不能做Model Multiple Choice Field ,因为模型对象是在表单提交之后才创建的,我不能做Multiple Choice Field,因为我需要接受任意字符串,而不仅仅是一系列预先定义的选项。

有人知道怎么做吗?

4

3 回答 3

8

只需使用由逗号分隔的常规文本字段。在视图中处理表单提交后,根据该字段进行逗号字符串拆分。然后遍历每个创建并保存一个新模型。应该不会太难。

于 2012-11-28T22:30:50.323 回答
1

在我的情况下,处理forms.JSONField(decoder="array")forms.py在表单类中使用的字符串列表

于 2022-02-09T12:21:55.070 回答
-3

我想出了一个解决方案——有点老套,但现在可以了。

获取表单数据后,我将列表存储在一个变量中:
event_locations = form_data.get('event_locations', None)

然后我从 form_data 中删除它,所以 Django 表单永远不会得到列表:

if event_locations:
   del form_data['event_locations']

我用 form_data 实例化我的表单,并分别处理列表:

f = NewEventForm(form_data)
...
for loc in event_locations:
  #create new models here

我意识到这并不能直接解决我提出的问题,因为我们仍然没有 Django 表单字段来获取列表,但这是一种将列表传递给采用表单并能够处理它的视图的方法.

于 2012-11-29T18:23:25.363 回答