基于其他领域的模型领域?

bro*_*njc 3 django

我可以将模型字段基于其他字段吗?例如:

class Foo(models.Model):
    x = models.PositiveSmallIntegerField()
    y = models.PositiveSmallIntegerField()
    z = models.PositiveSmallIntegerField()

    score = models.PositiveSmallIntegerField(default=x+y+z)
Run Code Online (Sandbox Code Playgroud)

小智 10

这个怎么样?

class Foo(models.Model):
     x = models.PositiveSmallIntegerField()
     y = models.PositiveSmallIntegerField()
     z = models.PositiveSmallIntegerField()

     @property
     def score(self):
         return self.x + self.y + self.z
Run Code Online (Sandbox Code Playgroud)

关于模型方法的官方文档在这里


kar*_*ikr 7

是的,处理此问题的最佳方法是覆盖save模型的方法

class Foo(models.Model):
    x = models.PositiveSmallIntegerField()
    y = models.PositiveSmallIntegerField()
    z = models.PositiveSmallIntegerField()

    score = models.PositiveSmallIntegerField()

    def save(self, *args, **kwargs):
        self.score = self.x + self.y + self.z
        super(Foo, self).save(*args, **kwargs) # Call the "real" save() method.
Run Code Online (Sandbox Code Playgroud)

确保您负责必要的验证.

更多相关内容:官方文档