Django 在呈现模板之前在UpdateView中添加工作
我使用的是Django 在呈现模板之前在UpdateView中添加工作,django,django-class-based-views,Django,Django Class Based Views,我使用的是UpdateViewas。我想扩展下面的类,以便在呈现html页面之前可以执行一些特定于对象的计算。例如,下面的一些伪代码,do\u some\u calc()将添加两个数字,结果将存储在MyModel的对象/实例中 有没有更好的方法 models.py: class MyModel(models.Model): A = models.FloatField(null=True) B = models.FloatField(null=True) C = mode
UpdateView
as。我想扩展下面的类,以便在呈现html页面之前可以执行一些特定于对象的计算。例如,下面的一些伪代码,do\u some\u calc()
将添加两个数字,结果将存储在MyModel的对象/实例中
有没有更好的方法
models.py:
class MyModel(models.Model):
A = models.FloatField(null=True)
B = models.FloatField(null=True)
C = models.FloatField(null=True)
def do_some_calc(self):
self.C = self.A + self.B
#
关于get_success_url是否是进行此操作的正确位置,存在争议。form_valid可能是更好的地方
def form_valid(self, form):
instance = form.save(commit=False)
instance.A = instance.B + instance.C
return super(UpdateMyModelView, self).form_valid(form)
这样,您只保存模型一次。如果您试图在get_success_url中执行此操作,则模型实例已以超级类的有效方法的形式保存
def get_success_url(self):
# note self.object is the model instance
self.object.A = self.object.B + self.object.C
return self.request.POST.get('next', '/default-url/')
很高兴能帮忙
def get_success_url(self):
# note self.object is the model instance
self.object.A = self.object.B + self.object.C
return self.request.POST.get('next', '/default-url/')