【问题标题】:How to write form_valid method in django correctly如何在 django 中正确编写 form_valid 方法
【发布时间】:2021-09-22 08:12:12
【问题描述】:

在我的views.py 我有一个方法:

def form_valid(self, form):
    form.instance.fisher_id = self.request.user.fisher_id
    return super().form_valid(form)

然后我更改了代码以创建模态窗口并保存它。但我需要返回我的代码super().form_valid(form),因为 Fisher DUPLICATE ERROR KEY 有问题。

我的代码现在看起来像这样:

def form_valid(self, form):
    form.instance.fisher_id = self.request.user.fisher_id
    form.save()
    self.object = form.save()
    self.object.file.save('1.pdf', self.get_file())
    # return super().form_valid(form)
    return HttpResponseRedirect(self.get_success_url())

我有一个问题 DUPLICATE ERRROR KEY 没有这个注释字符串。我怎样才能实现这两个回报?请帮忙

【问题讨论】:

    标签: django forms django-views


    【解决方案1】:

    您调用 save 两次,这可能是个问题。如果您想在创建的实例上设置额外数据,通常可以执行以下操作;

    def form_valid(self, form):
        obj = form.save(commit=False) # this validates the data and returns an object but doesn't save to the database
        obj.fisher_id = self.request.user.fisher_id
        obj.file.save('1.pdf', self.get_file())
        obj.save()
        self.object = obj
        return HttpResponseRedirect(self.get_success_url())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      相关资源
      最近更新 更多