首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Django:在form_valid中调用类函数

Django:在form_valid中调用类函数
EN

Stack Overflow用户
提问于 2018-06-12 07:35:02
回答 2查看 274关注 0票数 0

我有一个基于类的视图。我想在保存模型中的字段时对其进行更新。此字段不是由用户设置的;它是一个说明表单数据已更改并需要重新审批的字段。我正在考虑的一种方法是在def form_valid中查询模型并将字段设置为所需的值。我正在运行的查询也在这个类上定义的函数中。我可以在def form_valid中运行这个函数而不是实现它吗?我所有的尝试都证明是徒劳的。

代码语言:javascript
复制
class CUpdateView(LoginRequiredMixin, UpdateView):

    def get_object(self):
        qs = C.objects.filter(
                    c_id = self.kwargs.get('c_id')
                )

        if qs.count() == 1:
            if self.request.user == qs.first().a.user or self.request.user == qs.first().inhouselandmanager.user:
                pass
            else:
                raise PermissionDenied 
            return qs.first()
        raise Http404

    def form_valid(self, form): 
        if self.object.status != 'initiated':
            return HttpResponseRedirect(reverse('c:detail', kwargs={'c_id': str(self.object.c_id) }))
        qs = super().get_object()
        qs.update(approved=False)

        return super().form_valid(form)
EN

回答 2

Stack Overflow用户

发布于 2018-06-12 10:08:49

使用self.get_object()代替将调用父类的get_objectssuper().get_object()

代码语言:javascript
复制
def form_valid(self, form): 
    if self.object.status != 'initiated':
        return HttpResponseRedirect(reverse('c:detail', kwargs={'c_id': str(self.object.c_id) }))
    qs = self.get_object()
    qs.approved=False
    qs.save() 

    return super().form_valid(form)

另外,由于qs是单个对象,因此不能对其使用update()方法。只要使用普通的save()即可。

票数 0
EN

Stack Overflow用户

发布于 2018-06-12 16:56:31

不要从那里获取对象,而是从form.instance获取。update是查询集上的方法,而不是模型实例;只需直接分配属性即可。

代码语言:javascript
复制
def form_valid(self, form): 
    if self.object.status != 'initiated':
        return HttpResponseRedirect(reverse('c:detail', kwargs={'c_id': str(self.object.c_id) }))
    form.instance.approved = False
    return super().form_valid(form)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50807418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档