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

Car*_*son 9 python django tastypie

我希望特定django-tastypie模型资源在列出对象时只有一个字段子集,在显示细节时只有所有字段.这可能吗?

Ben*_*ott 21

您现在还可以在use_in字段上使用该属性来指定显示该字段的相关资源.这可以是listdetail,或者是回调.

  • 这应该是主要答案.比重写方法更加明显和明确. (3认同)

ast*_*vic 14

您必须在实际的ModelResource中指定所有字段,然后重写该get_list方法以仅过滤掉您想要显示的字段.请参阅get_liston 的内部实现Resource以了解如何覆盖它.

但是,请注意,这仅适用于GET请求,如果授权限制允许,您仍应能够对包含所有字段的资源进行POST/PUT/PATCH.

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

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

做就是了:

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
Run Code Online (Sandbox Code Playgroud)

  • 应该有`del obj.data [field_name]`. (3认同)