Django表单字段用于字符串列表

Cla*_*ell 9 forms string django list django-forms

我需要一个Django表单字段,它将采用字符串列表.

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

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

有人知道怎么做吗?

Rob*_*ezy 7

只需使用逗号分隔的常规文本字段即可.在视图中处理表单提交后,根据该字段执行逗号字符串拆分.然后迭代每个创建并保存新模型.不应该太难.

  • 我知道这是一个非常老的问题,但你知道这是否仍然是惯例?看起来他们现在应该内置一些东西来处理列表。 (2认同)

Cla*_*ell -3

我想出了一个解决方案——有点老套,但目前有效。

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

然后我将其从 form_data 中删除,因此 Django 表单永远不会获取该列表:

if event_locations:
   del form_data['event_locations']
Run Code Online (Sandbox Code Playgroud)

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

f = NewEventForm(form_data)
...
for loc in event_locations:
  #create new models here
Run Code Online (Sandbox Code Playgroud)

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