【问题标题】:Render inline formset with ForeignKey in Django在 Django 中使用 ForeignKey 渲染内联表单集
【发布时间】:2017-12-29 17:35:33
【问题描述】:

我有两个模型 Model1 和 Model2,其中 Model2 包含指向其他模型(比如 Model3)的外键。我正在使用 django inline formset 添加和编辑与 Model1 相关的信息。下面是我创建的Formset,字段中的md_attributes是Model3的ForeignKey字段。

inline_form_set = inlineformset_factory(Model1, Model2, fields =('md_attributes', 'val',), max_num=0, can_delete=False, extra=0)

渲染表单集的模板是

{{ formset.management_form }}

{% for form in formset %}
    {{ form.id }}
    {{ form.md_attributes}}: {{ form.val }} <br><br>
{% endfor %}

 <input class="btn" type="submit" name="submit" value="Save"><br><br>
<input class="btn" formaction="{% url 'projects:admin_projects_info' project_name %}"
           type="submit" name="submit" value="Cancel">

使用上面的模板代码,表单集呈现为外键选择(选择字段)和文本输入字段。但我试图实现的是将外键选择呈现为表单集中的静态标签,如下所示

选择 1:一些价值,
选择2:其他价值

我尝试创建一个选项列表,然后在 for 循环(模板)中使用它,但是我的发布请求正在创建一个错误。我也认为这不是解决这个问题的有效方法。任何有价值的输入都将受到高度赞赏。谢谢

【问题讨论】:

    标签: python django django-forms django-templates inline-formset


    【解决方案1】:

    您必须在提交表单时发回 POST 中的每个字段。例如,如果您尝试将值呈现为 &lt;p&gt;{ value }&lt;/p&gt;,则需要在表单中的某处包含 &lt;input type="hidden" value="{ value }"/&gt;,以便浏览器在 POST 中包含该字段。

    这很容易被恶意用户操纵,因此在数据返回服务器时验证数据非常重要。一种这样的方法是将字段的初始值存储在表单的 init 中,无论在 POST 中发回什么,都可以将其恢复为干净的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-18
      • 2017-05-26
      • 1970-01-01
      • 2019-05-15
      • 2021-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多