Using ModelViewSet and DjangoObjectPermissions.
Django REST framework seems to not call check_object_permission for a "create" request (POST). I need to check the user is allowed to create THIS object before it's saved into database (because permission check depend of object values)
I suppose I need to override "create" method of the ModelViewSet but I didn't know how to get the instance from serializer without saving it to database.
- How to get the object instance from serializer without saving to database ?
- Or how to have DRF check for object permission for a POST/create request ?
Thanks
EDIT:
After deeping into DRF code, I'm able to get the instance without save :
def create(self, request, *args, **kwargs):
serializer = WorkedHourSerializer(data=request.data)
if serializer.is_valid():
instance = MyModel(**serializer.validated_data)
But Django refuse to check perm for an object without primary key so I have to force one :
instance.id = 0
self.check_object_permissions(request, instance)