2017-09-05 98 views
0

我繼承了一些代碼,使一個Django API,我試圖瞭解/獲得與如何適當地修改它交手..Django的模型計算領域從一對多的關係

我有一個叫做資產模型的類和稱爲校準的Model類。

校準工作與資產所以多對一的關係:

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

當我看一個單獨的資產,我可以看到校準記錄正如人們所期望。

在API的另一部分,我可以列出給定客戶的所有資產,但是在此頁面上,不會顯示校準記錄鏈接。

這是好的,因爲我實際上並不想看到這個視圖上的所有校準記錄,但我想在這裏看到最後一個(最新的)校準記錄,所以本質上將計算的字段添加到這個模型?

這個計算應該到哪裏去,怎麼做最好的方法呢?

+1

您需要提供有關要顯示此頁面瞭解更多詳情。這可能不需要成爲一個領域,但它取決於你的用例。您應該可能會顯示您的序列化程序和視圖。 –

回答

1

如果你想添加一個方法來篩選模型,你可以添加一個model.Manager

例如

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()