我正在使用Django,Mezzanine和Tastypie来构建我正在使用的CMS。 Tastypie公开API,以便其他应用程序可以使用CMS中的数据。我有许多带ImageFields的Django模型,我想在Tastypie的ModelResource脱水方法中为所有ImageFields执行一些特定的操作,即生成一些缩略图。我希望能够自动检查资源的相应模型是否包含任何ImageFields,而不是覆盖每个模型资源中的脱水并且按名称定位ImageFields,如果是,则将缩略图添加到资源的包中。
总之,有没有办法迭代模型资源的相应模型的字段,并检查脱水方法中每个字段的类型?
答案 0 :(得分:0)
您可以使用ModelResource
访问与Meta.object_class
相关联的模型。它要么明确定义,要么来自Meta.queryset
。可以从_meta
实例的ModelResource
属性访问元类。
模型的字段可以通过相应模型的元类的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