我有一个带有通用 UpdateView 的模型“SavedSearch”。每个站点用户可以有一个已保存的搜索。在网站上运行搜索时,我想让他们能够单击“保存此搜索”按钮,该按钮将带他们进入当前 SavedSearch 模型的编辑表单,并将其值替换为搜索中的值(保存在请求.会话.参数)。
因此,我试图捕获模板途中的绑定表单并替换一些值而不保存,以便用户有机会编辑选项或改变主意并取消。
我尝试更新 get_form() 中的实例字段:
def get_form(self, form_class):
form = super(SavedSearchUpdateView, self).get_form(form_class)
# if request is coming from a search form "save" click,
# replace form context data with options from search form.
if self.request.GET.get('ss_override') and self.request.session.get('params', None):
params = self.request.session["params"]
if params.get('location', None): form.instance.location_keywords = params.get('location')
# ... etc.
return form
Run Code Online (Sandbox Code Playgroud)
我还尝试传递request到表单的__init__via get_form_kwargs(),然后在表单的 init 中执行与上面几乎相同的操作。这两种策略都不会导致表单数据发生任何变化。
我还尝试传递request到get_form_kwargs()然后进入__init__:
def __init__(self, *args, **kwargs):
request = …Run Code Online (Sandbox Code Playgroud)