我希望特定的django-tastypie模型资源在列出对象时仅具有字段的子集,而在显示详细信息时具有所有字段。这个是可能的吗?
发布于 2012-05-22 20:57:13
您必须指定实际ModelResource中的所有字段,然后覆盖get_list方法,以便只过滤出您想要显示的字段。请参阅Resource上get_list的内部实现,以了解如何覆盖它。
但是,请注意,这只适用于GET请求,如果您的授权限制允许您这样做,您应该仍然能够使用所有字段对资源执行POST/PUT/PATCH。
在坚果外壳中,您希望在对obj_get_list返回的所有ORM对象调用full_dehydrate之前,对内部字段列表进行热修补。
或者,你可以让整个脱水机制发生,并在它结束时删除你不想显示的字段,如果你不关心尽可能快的挤出速度。当然,只有在作为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发布于 2013-04-16 18:38:15
现在还可以在字段上使用use_in属性来指定要在其中显示该字段的相关资源。这可以是list或detail,也可以是回调。
发布于 2013-01-29 12:00:04
在GitHub上有一个open issue for this,并提供了一些建议的解决方法。
https://stackoverflow.com/questions/10693379
复制相似问题