nested router extension과 함께 장고 REST 프레임 워크를 사용하고 있습니다. 내 경로 중 하나는 다음과 같습니다. companies/$company/locations/$location
$company
및 $location
은 슬러그 변수입니다.중첩 된 경로에 대한 Django REST 권한
사용자가이 URL에 POST 할 수 있도록 허용하려면 companies/$company/locations/
새 위치를 추가하십시오. 나는 POST를하는 사용자가 POST 할 회사에 대한 수정 권한을 갖고 있는지 확인하고자합니다. 현재 내 개체 수준 사용 권한은 django-guardian
입니다. POST 메시지에는 URL에서 추측 할 수있는 회사 이름이 포함되지 않은 새 위치의 이름 만 포함됩니다. 이 경우 권한을 올바르게 적용하는 데 어려움을 겪고 있습니다. 나는 새 Location
객체의 필드를 뷰셋의 pre_save
메소드에서 설정 했었지만 권한 확인이 적용 되기에는 너무 늦었습니다.
이것을 시행하는 가장 좋은 방법은 무엇입니까? 이 경우
는 사용자가 POST에있는 회사가 포함되어 있지 않습니다, 나는이 (가) 뷰셋에 다음을 추가하여 회사의 유효성을 검사 할 수 있습니다 :def get_queryset(self):
parent = super(LocationViewSet, self).get_queryset()
return parent.filter(company__slug=self.kwargs['company_slug'])
혹시 해결 방법을 찾았습니까? – Gabriel
@alex 어떻게 pre_save 메소드에서 회사 슬러그를 얻었습니까? 나는 또한 실제 질문에 대한 답변을 찾고있다 – Neil
URL과 뷰 및 시리얼 라이저를 게시 할 수 있습니까? –