django-tastypie 是否可以在单个资源的列表和详细信息视图中显示一组不同的字段



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

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

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

但是,请注意,这仅适用于 GET 请求,如果您授权限制允许,您仍然应该能够在具有所有字段的资源上进行 POST/PUT/PATCH 操作。

简而言之,您希望在对obj_get_list返回的所有ORM对象调用full_dehydrate之前对内部字段列表进行热修补。

或者,您可以让完整的脱水机制发生,并在它结束时删除您不想显示的字段,如果您不关心尽可能多地挤出速度。 当然,只有当 URL 作为调用的结果被调用时,才需要执行此操作get_list。这种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

GitHub 上有一个未解决的问题,那里提出了许多解决方法。

也可以使用脱水(self,bundle(方法。

def dehydrate(self, bundle): del bundle.data['attr-to-del] return bundle

最新更新