我有一个Django ListView / FormView组合,页面列表中的每个对象都有一个切换模态表单的按钮。表单有一个隐藏字段,我想用它来自的列表中的对象的slug预填充(即不是页面的slug,而是页面上列表中的对象)。我能想到的一种方法可能就是让{{form}}标签以某种方式接受对象的slug作为参数 - 比如{{form object_instance = object.slug}}。我怎么能这样做?我怎么能在ListView中调用它?
感谢您提供的任何意见。
答案 0 :(得分:0)
如果列表的每一行都有一个表单,只需确保表单的上下文中存在slug。
如果您只有一个表单并根据用户的操作更改其内容,则必须使用JavaScript。
答案 1 :(得分:0)
您可以创建custom filter来初始化这样的表单。假设隐藏的输入字段在表单中名为slug
,代码应该是:
from django import template
register = template.Library()
@register.filter
def setslug(form, slugval):
form.initial['slug'] = slugval
return form
现在,您可以在模板中将其作为{{ form|setslug:slugfield }}