首页 文章

在Django中使用ForeignKey渲染内联formset

提问于
浏览
0

我有两个模型Model1和Model2,其中Model2包含一个其他模型的外键(Say Model3) . 我使用django内联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的模板是

{{ 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">

使用上面的模板代码,formset将呈现为Foreignkey选项(Choice Field)和Textinput字段 . 但我试图实现的是将外键选择作为下面的formset中的静态标签

选择1:一些 Value ,
选择2: Value

我尝试创建一个选项列表,然后在for循环(模板)中使用它,但是我的帖子请求正在创建一个错误 . 我也认为这不是解决这个问题的有效方法 . 任何有 Value 的投入都非常受欢迎谢谢

1 回答

  • 0

    您必须在表单提交时发回POST中的每个字段 . 例如,如果您尝试将值呈现为 <p>{ value }</p> ,则需要在 <input type="hidden" value="{ value }"/> 形式中包含某个位置,以便浏览器在POST中包含该字段 .

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

相关问题