PermissionField¶
PermissionField allow you to retrieve permissions for instance.
Usage¶
Define permission field in serializer:
from rest_framework.serializers import ModelSerializer
class NewsSerializer(ModelSerializer):
permissions = PermissionField(actions=('update', 'publish'))
class Meta:
model = News
fields = ('permissions',)
Example output:
{
"permissions": {
"update": {
"allow": true,
"messages": null
},
"publish": {
"allow": false,
"messages": [
"Already published"
]
}
}
}
Children¶
If you need to serialize children’s permissions, you can use the children
argument. For example, you may need to know that you can create some related
instances.
from permission_manager_drf import PermissionFieldChild
class NewsSerializer(ModelSerializer):
permissions = PermissionField(
actions=('update', 'publish'),
children=[
PermissionFieldChild(
name='image',
manager=ImagePermissionManager,
actions=['create'],
)
]
)
{
"update": {
"allow": false,
"messages": null
},
"publish": {
"allow": false,
"messages": null
},
"image": {
"create": {
"allow": false,
"messages": [
"Parent is not editable"
]
}
}
}