在generic.DetailView

时间:2017-09-23 06:25:29

标签: django django-views

有没有办法在模板呈现之前访问将在views.py中的generic.DetailView中呈现的模型实例?像这里假设的功能:

class MyModelDetailView(LoginRequiredMixin, generic.DetailView):
    model = MyModel
    template_name_suffix = '_details'

    def do_some_initial_stuff(model_instance):
        # do stuff to model_instace, 
        # like assigning fields, creating context variables based on existing fields, etc.

最终,我希望用户在一个模板中单击特定模型实例的按钮,然后定向到这个generic.DetailView模板,其中模型的一些字段值发生变化,其他一些东西(例如。该模型可能有一个字段,确认该用户单击了上一个模板中的按钮)。建议最有效的方法来做到这一点将不胜感激。谢谢:))

1 个答案:

答案 0 :(得分:1)

如果您只想在上一个视图中单击按钮进行某些更改,则可以使用Django 会话。将所需的值添加到会话dict。

# (* top-level *)
# let repeat_10 = repeat ~n:10;;
# repeat_10 "foo";;
- : bytes = "foofoofoofoofoofoofoofoofoofoo" (* top-level output *)

要在当前视图上下文中进行更改,可以通过覆盖get_context_data()来完成。

像:

  request.session['button_clicked'] = True

有关Django会话的更多信息:https://docs.djangoproject.com/en/1.11/topics/http/sessions/