Django模型计算从一对多关系的字段

时间:2017-09-05 10:33:13

标签: django django-models django-rest-framework

我使用django API继承了一些代码,并试图了解/掌握如何正确修改它。

我有一个名为Asset的Model类和一个名为Calibration的Model类。

校准与资产有多对一关系,所以:

class Calibration(Record):
    ...
    asset = models.ForeignKey(Asset, relatedName = "calibrationRecords")
    ...

当我查看单个资产时,我可以看到校准记录,正如人们所期望的那样。

在API的另一部分,我可以列出给定客户的所有资产,但是在此页面上,不显示calibrationRecords链接。

这有点好,因为我实际上并不想看到此视图上的所有校准记录,但我想在这里看到最后一个(最近的)校准记录,所以实质上是在这个上添加一个计算字段模型?

这个计算应该去哪里,最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

如果要添加方法来过滤模型,只需添加model.Manager

即可

E.g。

class ReviewerManager(models.Manager):
    def get_all_the_younger_reviewers(self):
        return self.get_queryset().filter(age__lt=18)

class Reviewer(models.Model):
    first_name = models.CharField(max_lenght=50, null=False, blank=False)
    last_name = models.CharField(max_lenght=50, null=False, blank=False)
    age = models.IntegerField()

    objects = ReviewerManager()

    @property
    def full_name(self):
        return self.first_name + " " + self.last_name

现在您可以使用新方法进行过滤:

Reviewer.objects.get_all_the_younger_reviewers()