2016-07-01 4 views
0

Django Rest 프레임 워크에서 관련된 객체에 대한 사용 권한을 제한하는 방법이 있습니까? 예를 들어 , 나는 사용자가 소유 한 티켓 모델 인스턴스가 있습니다DRF 권한 : 관련 모델의 has_object_permission

class Ticket(models.Model): 
    # other fields 
    state = FSMField(default=SOME_STATE) 
    owner = models.ForeignKey(User, related_name="tickets", null=True) 

    def allocate(self, by=None): 
     # allocate the ticket here 
     pass 

을 그리고 주인은 allocate 방법에 대한 액세스를 갖고 싶어. Figure에서 has_object_permission을 사용해야하지만 관련 객체에 대해서는이를 수행하는 방법을 알지 못합니다. 또한 state을 제외한 모든 필드를 시리얼 라이저에서 읽기 전용으로 표시 할 수 있습니다.

아이디어가 있으십니까?

답변

0

출력의 경우 that post에 설명 된대로 관련 필드/serializer의 get_queryset을 재정의 할 수 있습니다.

입력의 경우 두 번째 유효성 검사 단계 (즉, serializer가 유효성이 검사 된 데이터를 반환 한 후)에서 권한을 처리해야합니다. 필요한 경우 오류 데이터가있는 ValidationError을 올려야합니다.