gpt4 book ai didi

django - 如何更改/更改 django UpdateView 中的帖子数据

转载 作者:行者123 更新时间:2023-12-04 02:07:40 25 4
gpt4 key购买 nike

我正在为我的 model/records 使用 django 更新 View 编辑如下内容

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 post(self, request, *args, **kwargs): ,但我不知道如何使用它

假设下面是我得到的 request.POST 数据
<QueryDict: {u'product_name': [u'Biscuit'], u'product_price': [u'1000'], u'product_tag': [u'']}>

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

我也知道 Querydict 是可变的,但因为确定我需要在 submitting/saving to database 之前编辑 POST 数据,我需要将该 querydict 设为 dict,然后对其进行编辑,然后转换回 querdict

所以毕竟我的问题是什么
  • 我们如何更改 POST数据在 UpdateView在提交/保存到数据库之前
  • post方法有用吗?
  • 最佳答案

    QueryDict创建它的 .copy() 后是可变的.见 docs .

    更新 例子:

    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)

    Here是关于该主题的更广泛的讨论。

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

    关于django - 如何更改/更改 django UpdateView 中的帖子数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20346286/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com