2013-11-25 47 views
1

我正在使用Django,Mezzanine和Tastypie作爲我正在構建的CMS。 Tastypie公開了一個API,以便其他應用程序可以使用來自CMS的數據。我有很多帶有ImageField的Django模型,我想對所有ImageFields的Tastypie的ModelResource脫水方法執行一些特定的操作,即生成一些縮略圖。我希望能夠自動檢查資源的相應模型是否具有任何ImageField,如果是,請將縮略圖添加到資源的包中,而不是在每個模型資源中重寫脫水並按照名稱定位ImageField。對於具有特定類型字段的模型,Tastypie脫水

總之,有沒有一種方法來遍歷模型資源的相應模型的字段,並檢查脫水方法中每個字段的類型?

回答

0

您可以使用Meta.object_class訪問與ModelResource相關的型號。它可以是明確定義的,也可以是Meta.queryset。元類可以從實例的_meta屬性訪問。

模型的字段可以通過fields屬性訪問相應模型的元類(在_meta屬性下可用)。

這就是說,下面應該工作:

class MyModelResource(ModelResource): 
    class Meta: 
     # If `object_class` is omitted, it's value is taken from 
     # `queryset`, so defining both is optional. 
     object_class = MyModel 
     queryset = MyModel.objects.all() 

    def dehydrate(self, bundle): 
     # `model_class` == `MyModel` 
     model_class = self._meta.object_class 

     fields_list = model_class._meta.fields 
相關問題