我正在尝试采用'额外视图'作为处理表单集的高级方法,并且希望在我的表单集模板的每一行上都有一个链接,以重定向到相关的基于对象的页面,为此,我需要该对象的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指令一起使用,然后再进行模板渲染失败。
非常感谢您的帮助。
我已经解决了这个问题,我认为分享它很有用:
我的表单模板网址需要包含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>