【问题标题】:Adding multiple inputs by user dynamically用户动态添加多个输入
【发布时间】:2019-01-09 15:19:21
【问题描述】:

我是 Django 2.0 的新手。我正在做一个项目,我需要用户输入问题(从至少 1 到他们想要的尽可能多)。就像添加一个问题后,如果他们想在同一个表单字段中添加更多问题,他们应该可以选择(例如,如果我有一个 Textarea 字段,它应该接受多个 Textarea 字段并且可以单独显示)。

我该怎么做,请告诉我,谢谢。

【问题讨论】:

  • 对于后端验证,您可能需要formset。要在前端动态添加字段,您需要使用 javascript。您可以查看 django 管理员如何处理在模型更改视图中添加相关实体。

标签: django python-3.x django-forms


【解决方案1】:

对于您的后端模型,您有两种选择:

  • 拥有一个文本区域,用户可以在其中输入多个问题。这是前端和后端最简单的方法,但不会那么干净。
  • 具有动态数量的文本区域字段。

要完成第二种方法,您将有两个模型:

  1. 代表问题列表的一个。让我们称之为QuestionList 这很可能有一个指向User 的ForeignKey 字段
  2. 另一个代表一个问题。这将有一个 textarea 字段,以及一个指向 QuestionList 的 ForeignKey。您可能还需要一个表示列表中顺序的 IntegerField。

注意:您也可以使用 CharFields 代替 textarea 字段,但您必须设置字符数限制。

【讨论】:

  • 谢谢,我会努力实现的
  • ooo 我不知道,水 malooOOoooonne。 QuestionList 模型是不必要的,可以通过在 Question 模型上使用非唯一的 User ForeignKey 来克服(实际上是“一对多”关系)。这样,您的数据库中就少了一张表。从那里可以从Question 表单构造一个 FormSet 以允许多个输入
  • @stackPusher QuestionList 如果您需要区分同一用户提交的不同问题集,则该模型将很有用。您也可以在架构中仅使用提交日期字段来完成此操作,但如果您需要跟踪有关一组问题的问题顺序或其他元数据,则单独的表将很有用。 W@termaloo000one out.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 2021-07-28
  • 1970-01-01
相关资源
最近更新 更多