如何在表单集模板代码中使用ID字段作为url参数(使用django-extra-views)

问题描述 投票:0回答:1

我正在尝试采用'额外视图'作为处理表单集的高级方法,并且希望在我的表单集模板的每一行上都有一个链接,以重定向到相关的基于对象的页面,为此,我需要该对象的id字段的值作为url参数。

这里是视图:

from extra_views import ModelFormSetView
from .models import Course

class CourseFormSetView(ModelFormSetView):
    model = Course
    fields = ['id', 'ceName', 'ceExtName', 'ceDuration']
    template_name = 'course_view.html'
    factory_kwargs = {'extra': 1, 'max_num': None, 'can_order': False, 'can_delete': True}

这是模板的相关部分:

<form method="post">
    {% csrf_token %} 
    {% for form in formset %}
        <p>{{ form.ceName }} {{ form.ceExtName }} {{ form.DELETE }} <a href="{% url 'booksys:coursesetup_view' 1 %}" class="btn btn-info" role="button">Edit</a></p>
    {% endfor %}
    {{ formset.management_form }}
  <input type="submit" value="Submit" />
</form>

对于url参数,我已经尝试过{{ form.fields.id.value }},但它根本没有呈现到模板中,而{{ form.id }}则呈现为隐藏字段,但将无法与url template指令一起使用,然后再进行模板渲染失败。

非常感谢您的帮助。

django formset
1个回答
0
投票

我已经解决了这个问题,我认为分享它很有用:

我的表单模板网址需要包含form.id.value,以便将ID值正确呈现到模板的网址部分。

'extra': 1中有factory_kwargs的情况下,我需要它读取form.id.value|default_if_none:0,然后在链接视图中处理kwargs ['pk']的特殊零值。

模板的相关部分现在显示为:

<form method="post">
    {% csrf_token %} 
    {% for form in formset %}
        <p>{{ form.ceName }} {{ form.ceExtName }} {{ form.DELETE }} <a href="{% url 'booksys:coursesetup_view' form.id.value|default_if_none:0 %}" class="btn btn-info" role="button">Edit</a></p>
    {% endfor %}
    {{ formset.management_form }}
  <input type="submit" value="Submit" />
</form>
© www.soinside.com 2019 - 2024. All rights reserved.