2013-02-03 49 views
0

我已經看到自定義資源進一步分類的測試代碼。 但它是爲了test的緣故,不是用於任何實際用途。原因將您自己的資源繼承爲tastypie

爲什麼任何人都想要一個資源的子類爲顯而易見的原因(但顯然不是我)?

一個例子就足夠了。

回答

1

我剛剛遇到了需要繼承資源的情況。 我有了幾個子類,像這樣(我已經簡化了很多)一個Django模型:

class Information(models.Model): 
    name = models.CharField) 

class Question(Information): 
    question = models.CharField) 

class Link(Information): 
    url = models.CharField() 

我要訪問的所有信息對象的API,但還是希望能夠訪問所有每個子類的子類特定屬性。在這種情況下,我想有3個資源:

class InformationResource(ModelResource): 
    class Meta: 
     queryset = Information.objects.all() 

    def dehydrate(self, bundle): 
     '''Add some extra meta data here''' 

class QuestionResource(InformationResource): 
    class Meta: 
     queryset = Question.objects.all() 

class LinkResource(InformationResource): 
    class Meta: 
     queryset = Link.objects.all() 

這樣,我對所有返回的信息對象的API(以及通用於所有的人的屬性),但如果我需要訪問子類特定的屬性,我可以通過它們的子類資源API訪問它們。此外,這些子類資源將可以訪問爲其超類定義的所有方法。例如,他們可以重寫超類的脫水方法來添加更多的字段。