如何在表单集模板代码中使用 ID 字段作为 url 参数(使用 django-extra-views)
How to utilise ID field as url parameter in formset template code (using django-extra-views)
我正在尝试采用 'extra-views' 作为处理表单集的高级方法,并希望在我的表单集模板的每一行上都有一个 link 以重定向到相关的基于对象的页面,为此我需要该对象的 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 模板指令,然后模板渲染失败。
非常感谢任何帮助。
我已经找到了答案,我认为它足够有用,可以分享:
由于 form.id
是一个隐藏字段,我的模板 url 需要包含 form.id.value
以便正确呈现和绑定到模板的 url 部分。
在我的 factory_kwargs
中使用 'extra': 1
,我需要它来读取 form.id.value|default_if_none:0
,然后在链接视图中处理 kwargs['pk'] 的零特殊情况,否则对于新的表单集行,此字段显示为 None
.
我模板的相关部分现在显示为:
<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>
我正在尝试采用 'extra-views' 作为处理表单集的高级方法,并希望在我的表单集模板的每一行上都有一个 link 以重定向到相关的基于对象的页面,为此我需要该对象的 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 模板指令,然后模板渲染失败。
非常感谢任何帮助。
我已经找到了答案,我认为它足够有用,可以分享:
由于 form.id
是一个隐藏字段,我的模板 url 需要包含 form.id.value
以便正确呈现和绑定到模板的 url 部分。
在我的 factory_kwargs
中使用 'extra': 1
,我需要它来读取 form.id.value|default_if_none:0
,然后在链接视图中处理 kwargs['pk'] 的零特殊情况,否则对于新的表单集行,此字段显示为 None
.
我模板的相关部分现在显示为:
<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>