2013-04-09 3 views
2

는 다음의 유스 케이스를 처리 할 때 결과를 수수께끼로 가득 찬 벽에 부딪 가지고 GET 요청에 장고 REST 프레임 워크 비 모델 시리얼 라이저와 BooleanField

  • 레지스트레이션 상태를 변경하는 PUT에
  • 를 인증 된 사용자가 등록되어 있는지 여부를 검색하거나하지 : 다음 I 원하는 것을 기반.

PUT 요청에서 수신 페이로드를 처리 할 때까지 모든 것이 잘 작동합니다.

class RegistrationSerializer(serializers.Serializer): 
    registered = fields.BooleanField() 

과 함께 APIView의 PUT 방식에서 호출 : :이 같은 시리얼을 만드는 시도했습니다

serializer = RegistrationSerializer(data=request.DATA) 

하지만이 작동하지 않고 serializer.data 항상 포함`{ "등록" 쉘에서

} 거짓 해봤 다른 절연 시험 :

>>> rs = RegistrationSerializer(data={'registered':True}) 
>>> rs 
<app.serializers.RegistrationSerializer object at 0x10a08cc10> 
>>> rs.data 
{'registered': False} 

무엇 오전 내가 잘못하고있어? 이 유스 케이스를 처리하는 가장 좋은 방법은 무엇입니까?

답변

1

rs.data에 액세스하기 전에 먼저 rs.is_valid()으로 전화해야합니다.

실제로 프레임 워크가 그렇게하지 않으면 예외를 발생시켜야합니다.

+0

그건 속임수 였어! 고마워요. 나는 문서를 다시 확인했고 실제로 "Validation"섹션에서 항상'.is_valid()'메소드를 호출해야한다고 명시했지만 완전히 놓쳤다. – Franchu

관련 문제