【问题标题】:Calling some functions if Generic View is success如果通用视图成功,则调用某些函数
【发布时间】:2018-04-08 18:42:18
【问题描述】:

我在我的项目中使用通用视图/基于类的视图,如果视图成功完成,我想调用一些函数。我使用这个 def get_success_url() 方法。但我无法达到该功能的模型。我怎样才能摆脱这种情况,或者有没有其他方法可以做到这一点?

我的代码:

class MyModelUpdate(UpdateView):
    model = MyModel
    fields = ['details']

    def get_success_url(self, **kwargs):
        add_log(form.model, 2, 1, request.POST.user)
        return reverse_lazy('model-detail', kwargs = {'pk' :  self.kwargs['model_id'] })

【问题讨论】:

  • 什么意思,你不能“达到模型”。您尝试了哪些方法,哪些方法不起作用?

标签: python django django-generic-views django-class-based-views


【解决方案1】:

UpdateView类实现UpdateMixin,有form_valid等方法,只有在表单数据有效时才会调用。

所以你可以这样做:

class MyModelUpdate(UpdateView):
    model = MyModel
    fields = ['details']

    def get_success_url(self, **kwargs):
         return reverse_lazy('model-detail', kwargs={'pk': self.kwargs['model_id']})

    def form_valid(self, form):
        # The super call to form_valid creates a model instance
        # under self.object.
        response = super(MyModelUpdate, self).form_valid(form)

        # Do custom stuff here...
        add_log(self.object, 2, 1, self.request.POST.user)

        return response

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多