Skip to main content
 首页 » 编程设计

python之在 Django 中保存之前按摩模型数据

2025年05月04日34落叶无声

我不确定这是否是最好的方法,但我有一些数据是通过表单发送的。我有一个 ModelForm,它采用该表单数据的 request.POST。发送的所有数据都是描述、金额和存款( bool 值)。

当此人提交数据时,金额将是一个正数,但如果 deposit 为 False,我想将其作为负数存储在数据库中。

我正在考虑在 Model 或 ModelForm 中执行此操作,并在保存之前进行一些按摩......因此,在其中一个类中的某个地方,我想要类似的东西:

if not deposit: 
    amount = -amount 

...然后按原样保存。

有没有办法在 ModelForm 或 Model 中处理这个问题,让我不必在 View 中执行所有这些逻辑?

请您参考如下方法:

ModelForm 的 save() 方法是一个很好的地方:

class MyForm(models.ModelForm): 
    ... 
    def save(self): 
        instance = super(MyForm, self).save(commit=False) 
        if not self.deposit: 
            self.amount = -self.amount 
        instance.save() 
        return instance