이미 개발 한 미니 reddit 프로젝트에 Django REST framework으로 작업하기 시작했습니다. DRF에서 시리얼 라이저 유효성 검사 중에 인스턴스 가져 오기
문제
내가이 상황에 붙어 있다는 것입니다 :Minisub
이 하위 Reddit 같다. 그 중에서도 이라는 필드는 ManyToMany
이고 User
인 필드가 있습니다.
는 ManyToMany
이고 Minisub
인 필드가 minisubs
인 미니 홈피에 표시되는 광고입니다. 필드도 있고 외래 키는 User
입니다.
나는이 관리자가 DRF API를 통해 미니 홈피에 광고를 추가 할 수있게하고 싶습니다. 그것은 실제로 일하고 있습니다. 그러나 나는 그들이 매니저 인 곳에서만 미니 봉을 넣는 지 확인하고 싶습니다.
class AdSerializer(serializers.HyperlinkedModelSerializer):
# ...
def validate_minisubs(self, value):
for m in value:
if user not in m.managers.all():
raise serializers.ValidationError("...")
return value
내 질문은 :
나는 그런 방법을 발견하는 방법user
을 얻는 방법? 나는 값을 얻을 방법을 찾을 수 없습니다
Ad.author
(이 필드는 자동으로 사용자 인증에 따라 직렬 데이터에 설정됩니다). 어쩌면 방법이 없기 때문에 나는 길을 찾지 못할 것입니까? 이 일을 할 곳은 다른 곳인가요?
미리 감사드립니다.
문제는 나는 그가 관리자 것을 알고 만하지 않을 것입니다 : 자신이 관리자 인 경우
사용 권한 인스턴스는 u 사용자를 얻을 확인하는 데 사용할 수있는 요청에 액세스 할 수 있습니다 그는 그가 게시하려고하는'광고'미니 필드의 모든'MiniSub'의 관리자 다. – caymard
사용자 개체에 대한 쿼리에서 파생 될 수 있습니까? 작성중인 사용자 정의 권한 클래스의 본문에 있으면 oder의 데이터베이스에서 아무 것도 찾지 않아서 'True'또는 'False'의 결론에 도달 할 수 있습니다. – Jag
액세스 권한이 있으면 네, 데이터베이스에 필요합니다. 하지만, 사용자가 요청한 데이터가 합법적인지 여부를 확인하기 위해 요청에서 데이터를 deserialize해야합니다. 어쨌든'self.context [ 'request']. user'를 사용하여'validate_minisubs' 메소드에서 사용자를 얻는 방법을 발견했습니다 ([here] (http://stackoverflow.com/a/19147358/2595458). 너의 시간! – caymard