首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >django-tastypie可以在单个资源的列表和详细视图中显示不同的字段集吗?

django-tastypie可以在单个资源的列表和详细视图中显示不同的字段集吗?
EN

Stack Overflow用户
提问于 2012-05-22 06:14:23
回答 4查看 5.6K关注 0票数 11

我希望特定的django-tastypie模型资源在列出对象时仅具有字段的子集,而在显示详细信息时具有所有字段。这个是可能的吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-22 20:57:13

您必须指定实际ModelResource中的所有字段,然后覆盖get_list方法,以便只过滤出您想要显示的字段。请参阅Resourceget_list的内部实现,以了解如何覆盖它。

但是,请注意,这只适用于GET请求,如果您的授权限制允许您这样做,您应该仍然能够使用所有字段对资源执行POST/PUT/PATCH。

在坚果外壳中,您希望在对obj_get_list返回的所有ORM对象调用full_dehydrate之前,对内部字段列表进行热修补。

或者,你可以让整个脱水机制发生,并在它结束时删除你不想显示的字段,如果你不关心尽可能快的挤出速度。当然,只有在作为get_list调用的结果调用了URL时,才需要这样做。对于这个alter_list_data_to_serialize(request, to_be_serialized),有一个方便的方法。

只需这样做:

代码语言:javascript
运行
复制
class SomeResource(Resource):
    class Meta(...):
         ...
         field_list_to_remove = [ 'field1', 'field2' ]
         ...

    def alter_list_data_to_serialize(request, to_be_serialized):
        for obj in to_be_serialized['objects']:
            for field_name in self._meta.field_list_to_remove:
                del obj.data[field_name]
        return to_be_serialized
票数 14
EN

Stack Overflow用户

发布于 2013-04-16 18:38:15

现在还可以在字段上使用use_in属性来指定要在其中显示该字段的相关资源。这可以是listdetail,也可以是回调。

票数 22
EN

Stack Overflow用户

发布于 2013-01-29 12:00:04

在GitHub上有一个open issue for this,并提供了一些建议的解决方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10693379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档