tastypie中的自定义逻辑

时间:2013-01-31 12:52:57

标签: django tastypie

我可以在哪里放置自定义逻辑或我应该重载哪个函数来在tastypie中添加自定义逻辑。例如:想要以大写形式返回包含CustomObject的{​​{1}},但在返回之前我想将其设为小写。

2 个答案:

答案 0 :(得分:1)

如果您想提供类似的自定义内容,我建议您在dehydrate期间执行此操作。查看documentation,示例几乎就是您要找的内容:

class MyResource(ModelResource):
    # The ``title`` field is already added to the class by ``ModelResource``
    # and populated off ``Note.title``. But we want allcaps titles...

    class Meta:
        queryset = Note.objects.all()

    def dehydrate_title(self, bundle):
        return bundle.data['title'].upper()

好吧,除了你当然在寻找.lower():)

class CustomObjectResource(ModelResource):

    class Meta:
        queryset = CustomObject.objects.all()

    def dehydrate_title(self, bundle):
        return bundle.data['name'].lower()

答案 1 :(得分:0)

你可以IMHO覆盖任何字段:

class CustomResource(ModelResource):

    name = fields.CharField(
        attribute='get_lowercased_name', 
        readonly=True 
    )

    class Meta:
        queryset = Custom.objects.all()

您需要在get_lowercased_name模型类上定义Custom方法。