14π
You would have to specify all fields in the actual ModelResource then override the get_list
method to filter out only the fields you want to show. See the internal implementation of get_list
on Resource
to see how to override it.
However, note this will only apply on GET requests, you should still be able to POST/PUT/PATCH on the resource with all fields if you authorization limits allow you to do so.
In a nut shell, you want to hot patch the internal field list before full_dehydrate is called on all ORM objects returned by obj_get_list
.
Alternatively, you can let the full dehydrate mechanism take place and just at the end of it remove the fields you donβt want to show if you donβt care about squeezing out as much as speed as possible. Of course you would need to do this only if the URL is invoked as a consequence of get_list call. There is a convenience method for this alter_list_data_to_serialize(request, to_be_serialized)
.
Just do:
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
22π
You can also now use the use_in
attribute on a field to specify the relevant resource to show the field in. This can either be list
or detail
, or a callback.
- Django β How can you include annotated results in a serialized QuerySet?
- Is it possible to force queryset evaluation while keeping it a queryset
0π
There is an open issue for this on GitHub, with a number of workarounds suggested there.
0π
Can also use the dehydrate(self, bundle) method.
def dehydrate(self, bundle):
del bundle.data['attr-to-del]
return bundle
- How to make trailing slash optional in django
- Best practice of django + PyMongo pooling?
- Nested URL Patterns in Django REST Framework