使用ModelViewSet和DjangoObjectPermissions。在Django rest框架中創建之前檢查對象權限
Django REST框架似乎不會爲「創建」請求(POST)調用check_object_permission。 我需要檢查用戶被允許創建THIS對象之前它被保存到數據庫(因爲權限檢查取決於對象值)
我想我需要重寫ModelViewSet的「創建」方法,但我不知道如何從串行器獲取實例而不保存到數據庫。
- 如何從串行器中獲取對象實例而不保存到數據庫?
- 或者如何讓DRF檢查POST /創建請求的對象權限?
感謝
編輯:
進一步深化閩臺到DRF代碼後,我能夠獲得實例不保存:
def create(self, request, *args, **kwargs):
serializer = WorkedHourSerializer(data=request.data)
if serializer.is_valid():
instance = MyModel(**serializer.validated_data)
但Django的拒絕檢查燙髮的對象沒有主鍵所以我必須強制一個:
instance.id = 0
self.check_object_permissions(request, instance)
哪裏'check_object_permissions '從哪裏來?你用這個庫嗎? – DanEEStar
它來自REST框架API:http://www.django-rest-framework.org/api-guide/permissions/#object-level-permissions –