【问题标题】:Django Form Field for a list of strings用于字符串列表的 Django 表单字段
【发布时间】:2012-11-16 21:18:19
【问题描述】:

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

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

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

有人知道怎么做吗?

【问题讨论】:

    标签: django string forms list django-forms


    【解决方案1】:

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

    【讨论】:

    • 我考虑过这一点,但这对我的 API 惯例来说是一个很大的突破。
    【解决方案2】:

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

    抓取表单数据后,我将列表存储在一个变量中:
    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 表单字段来获取列表,但它是一种将列表传递给采用表单的视图并能够处理它。

    【讨论】:

      猜你喜欢
      • 2020-05-21
      • 2020-10-11
      • 2016-10-10
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 2014-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多