我正在使用Django,Mezzanine和Tastypie来构建CMS。Tastypie公开了一个API,以便其他应用程序可以使用CMS中的数据。我有许多带有ImageFields的Django模型,我想在Tastypie的ModelResource脱水方法中为所有ImageFields执行一些特定的操作,即生成一些缩略图。与其在每个模型资源中重写脱水并按名称定位ImageFields,我希望能够自动检查资源的对应模型是否有ImageFields,如果有,则将缩略图添加到资源的包中。
总之,是否有一种方法可以迭代模型资源的相应模型字段并检查脱水方法中每个字段的类型?
发布于 2013-11-25 13:53:14
您可以使用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
https://stackoverflow.com/questions/20203702
复制相似问题