Django 模型 class 中的函数调用使用来自其他模型 class 的数据

Function calls in Django model class using data from other model class

我有两个模型 classes,我需要编写一些同时使用这两个模型的逻辑。不确定我应该在哪里添加这个逻辑,以及如何实现。这是一个高度简化的版本;

class Yacth(models.Model):
    name = models.CharField(max_length=50)
    adjuster = models.IntegerField(default=1)

class Result(models.Model):
    yacht =  models.ForeignKey(Yacht, on_delete=models.CASCADE)
    result = models.DecimalField(null=TRUE)
    adjusted_result = # I want to populate this field with adjusted result

    def result_adjusted(self):
        a = self.result
        b= self.yacht.adjuster # can I call values from another class like this?
        adjusted_result = (a * b)
        return adjusted_result

我需要将结果乘以调整器,如上面的简单草图方法 (result_adjusted) 所示。我如何实现这一点,以便使用方法 return?

填充模型 class 中的调整结果

谢谢

是的,您可以通过外键访问其他模型。 你可以像下面这样使用@属性:

class Result(models.Model):
    yacht =  models.ForeignKey(Yacht, on_delete=models.CASCADE)
    result = models.DecimalField()

    @property
    def adjusted_result(self):
        return self.result * self.yacht.adjuster

之后您就可以访问 Result.objects.first().adjusted_result

查看官方 django 文档中的 @属性 用法:https://docs.djangoproject.com/en/3.2/topics/db/models/#model-methods