【问题标题】:How to utilise ID field as url parameter in formset template code (using django-extra-views)如何在表单集模板代码中使用 ID 字段作为 url 参数(使用 django-extra-views)
【发布时间】:2020-02-06 02:34:44
【问题描述】:

我正在尝试采用“额外视图”作为处理表单集的高级方法,并希望在我的表单集模板的每一行上都有一个链接,以重定向到相关的基于对象的页面,为此我需要该对象的 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 模板指令和模板呈现然后失败。

非常感谢任何帮助。

【问题讨论】:

    标签: django formset


    【解决方案1】:

    我想出了这个问题的答案,我认为它足够有用,可以分享:

    由于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>
    

    【讨论】:

      猜你喜欢
      • 2014-03-09
      • 2012-11-27
      • 2014-05-31
      • 2022-01-05
      • 2019-06-25
      • 2012-10-02
      • 2021-09-26
      • 2020-01-30
      • 1970-01-01
      相关资源
      最近更新 更多