我有一个模型,该模型将在其整个生命周期内进行更新。我希望每次更新都基于旧对象返回一个新对象,而不是更新原始对象。这是为了向用户提供先前的对象作为参考,同时确保他们不会覆盖它。我尝试使用相同的表单,这个问题建议它可能会实现我想要的,但它没有(它更新了)。然后我尝试重写 save 方法以指向我的 CreateView,如下面的代码所示,但这告诉我它需要一个 CreateView 实例作为其第一个参数。有没有办法获得我想要的行为?
class TriageUpdateView(PermissionRequiredMixin, UpdateView):
model = Triage
form_class = TriageForm
login_url = "/login/"
permission_required = "myapp.add_triage"
def form_valid(self, form):
obj = form.save(commit = False)
obj.completed_by = self.request.user.person
return TriageCreateView.form_valid(self, form)
Run Code Online (Sandbox Code Playgroud)
我找到了一种方法,尽管我不确定这是最好的方法。Django 通过检查主键值来决定是否更新或插入数据库。我在验证中将其设置为None,这就完成了。
class TriageUpdateView(PermissionRequiredMixin, UpdateView):
model = Triage
form_class = TriageForm
login_url = "/login/"
permission_required = "myapp.add_triage"
def form_valid(self, form):
obj = form.save(commit = False)
obj.pk = None
obj.completed_by = self.request.user.person
return super(TriageUpdateView, self).form_valid(form)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1340 次 |
| 最近记录: |