如何在django UpdateView中更改/更改发布数据

 孤独中残存的幸福_627 发布于 2023-02-13 11:56

我正在使用django更新视图来model/records编辑下面的内容

class EditProductView(LoginRequiredMixin, UpdateView):
    model = Product
    def get_template_names(self):

        return ['website/product/edit_product.html']

    def get_success_url(self):

        return reverse('product_details', args=[self.kwargs['pk']])

    def get_context_data(self, **kwargs):
        publisher = Publisher.objects.get(product__id=self.kwargs['pk']) 
        context = super(EditProductView, self).get_context_data(**kwargs)
        context.update(
           {
            'publisher':publisher,
            }
          )
        return context        

edit_product =  EditProductView.as_view()   

所以我想要/想要做的就是POST在提交表单之前改变(添加一些数据,根据网站功能编辑已提交的数据)数据,

所以我知道UpdateView有一些方法def def post(self, request, *args, **kwargs):,但我不确切知道如何使用它

假设下面是我得到的request.POST数据


所以现在我想改变上面的内容QueryDict,如果值为product_tag空,我需要指定一些默认值并提交最新的querdict

我也知道Querydict是可变的,但是因为我确实需要编辑POST数据,之前submitting/saving to database,我需要将该querydict作为dict,然后编辑它,然后转换回querdict

毕竟我的问题是什么

    在提交/保存到数据库之前,我们如何更改POST数据UpdateView

    post方法是否有效?

Krzysztof Sz.. 11

QueryDict您创建它之后是可变的.copy().查看文档.

更新示例:

class SomeUpdateView(UpdateView):

    def post(self, request, **kwargs):
        request.POST = request.POST.copy()
        request.POST['some_key'] = 'some_value'
        return super(SomeUpdateView, self).post(request, **kwargs)

这是关于该主题的更广泛的讨论.

此外,这不应该在ModelForm子类中完成吗?您当然知道可以将自定义表单设置为form_classin UpdateView.这样的逻辑通常需要单元测试,并且单元测试逻辑更容易.

1 个回答
  • QueryDict您创建它之后是可变的.copy().查看文档.

    更新示例:

    class SomeUpdateView(UpdateView):
    
        def post(self, request, **kwargs):
            request.POST = request.POST.copy()
            request.POST['some_key'] = 'some_value'
            return super(SomeUpdateView, self).post(request, **kwargs)
    

    这是关于该主题的更广泛的讨论.

    此外,这不应该在ModelForm子类中完成吗?您当然知道可以将自定义表单设置为form_classin UpdateView.这样的逻辑通常需要单元测试,并且单元测试逻辑更容易.

    2023-02-13 11:59 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有