How best to get the slug of an object from a Listview into a Django form
我有一个 Django ListView/FormView 组合,其中页面列表中的每个对象都有一个用于切换模式表单的按钮。表单有一个隐藏字段,我想用它来自的列表中的对象的 slug 预填充它(即,不是页面的 slug,而是该页面上列表中的对象)。我能想到的一种方法是让 {{ form }} 标记以某种方式接受对象的 slug 作为参数 - 例如 {{ form object_instance=object.slug }}。我该怎么做?我如何在 ListView 中调用它?
感谢您提供的任何意见。
您可以创建一个自定义过滤器来初始化这样的表单。假设隐藏的输入字段在您的表单中命名为
1 2 3 4 5 6 7 | from django import template register = template.Library() @register.filter def setslug(form, slugval): form.initial['slug'] = slugval return form |
现在你可以从你的模板中调用它为
如果列表的每一行都有一个表单,只需确保表单上下文中存在 slug。
如果您只有一个表单并根据用户的操作更改其内容,您将不得不求助于 JavaScript。