Django模型预定义方法覆盖 - 如何做一些数学和自动填充第三个字段?

时间:2015-11-06 00:47:10

标签: django

编辑:我有这个工作。这是问题的代码行(需要自我。 votes_total):

self.votes_total = self.votes_yes + self.votes_no

我希望有人可以指导我以正确的方式实现此模型覆盖。如果这是一个多余的问题,我很抱歉,这个问题相当新。

Django版本是1.3.7

我正在研究一个模型并希望用另外两个字段的总和自动填充一个字段(我实际上想要做更多的数学,但是现在我只需要一个工作概念)。我尝试了一些东西,但似乎总是得到(1048,"列' xxxxxxx'不能为空")错误。

这是一个简单的版本

class Votes(models.Model):
    votes_yes = models.IntegerField(blank=False)
    votes_no = models.IntegerField(blank=False)
    votes_total = models.IntegerField(editable=False)

    def save(self):
        votes_total = self.votes_yes + self.votes_no
        super(Votes, self).save()

1 个答案:

答案 0 :(得分:0)

是哪一列?

(1048, "Column 'xxxxxxx' cannot be null")

该错误表示当super(Votes, self).save()被点击时,您的某个字段为空或空白。

您无法在问题中显示填充votes_yesvotes_no的位置。您可能忘记填充其中一个字段。

轻松"修复"只是默认为0。这样可以避免错误通知;你仍然需要确保Votes实例是正确的。快速功能测试可能是最好的。

你可以这样做:

votes_yes = models.IntegerField(blank=False, default=0)
votes_no = models.IntegerField(blank=False, default=0)
votes_total = models.IntegerField(editable=False, default=0)

备注:我避免使用复数作为模型名称。