如何在Django模型中创建引用同一模型中另一个字段的字段

如何在Django模型中创建引用同一模型中另一个字段的字段,django,django-models,Django,Django Models,我想在我的模型中创建引用另一个字段(在同一个模型中)的字段并对其进行修改 我的代码: class Result(models.Model): score = models.IntegerField(default=10) rank = models.IntegerField(score/2) // how to point to score from the same model (Result)? 使用django模型,您可以创建方法,因此在

我想在我的模型中创建引用另一个字段(在同一个模型中)的字段并对其进行修改

我的代码:

class Result(models.Model):
   
      score = models.IntegerField(default=10)
      rank = models.IntegerField(score/2)         // how to point to score from the same model (Result)?


使用django模型,您可以创建方法,因此在您的模型中实现一种getter方法是一种很好的实践(这种方法本质上是被动的,所以如果将来分数发生变化,您总是可以获得正确的值)

但是第二种方法是重写您自己的特殊保存方法

class Result(models.Model):

  score = models.IntegerField(default=10)
  rank = models.IntegerField()

  def save(self, *args, **kwargs):
      kwargs['rank'] = kwargs['score'] / 2
      super(Result, self).save(*args, **kwargs) 

所以每次你保存模型时,排名都会根据分数来计算。

你不会。通常情况下,在数据库中引入数据复制也是不好的。如果
rank
总是
score/2
,只需使用
@属性或注释即可。
class Result(models.Model):

  score = models.IntegerField(default=10)
  rank = models.IntegerField()

  def save(self, *args, **kwargs):
      kwargs['rank'] = kwargs['score'] / 2
      super(Result, self).save(*args, **kwargs)