Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 在呈现模板之前在UpdateView中添加工作_Django_Django Class Based Views - Fatal编程技术网

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/')