2013-07-29 2 views
10
를 던졌습니다

나는 아주 간단한 시리얼 설정을 것으로 가정 무엇을 가지고,하지만 난 내 API에 데이터를 입력 할 때, 나는 다음과 같은 오류 얻을 :직렬화 ManyToMany (2.3.5)에 ValueError

ValueError: instance should be a queryset or other iterable with many=True

class MediaResourceSerializer(serializers.ModelSerializer): 
    owner = serializers.PrimaryKeyRelatedField(many=False, read_only=True) 

    class Meta: 
     model = MediaResource 
     fields = ('owner', 'name', 'type', 'url') 

class AnswerSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Answer 
     fields = ('text','is_correct','order') 

class QuestionSerializer(serializers.ModelSerializer): 
    answers = AnswerSerializer(many=True, required=False) 
    resources = MediaResourceSerializer(many=True, required=False) 

    class Meta: 
     model = Question 
     fields = ( 
      'question_id', 
      'type', 
      'order', 
      'question_text', 
      'explanation', 
      'resources', 
      'grading_weight', 
      'answers' 
     ) 

class QuizSerializer(serializers.ModelSerializer): 
    questions = QuestionSerializer(many=True, required=False) 
    created_by = serializers.PrimaryKeyRelatedField(many=False, read_only=True) 

    class Meta: 
     model = Quiz 
     fields = (
      'activity_id', 
      'name', 
      'is_hidden', 
      'created_by', 
      'created_date', 
      'last_updated', 
      'sharable', 
      'questions' 
     ) 

내가 주석 경우 '질문'

class QuizAPI(generics.RetrieveUpdateDestroyAPIView): 
    model = Quiz 
    serializer_class = QuizSerializer 
    lookup_field = 'activity_id' 

과 시리얼 : 여기

뷰입니다 필드를 QuizSerializer에서 실행하면 문제가없는 데이터를 처리 할 수 ​​있습니다.

** 편집 : 가 여기에 PUT 통화 페이로드의 :

activity_id: 4 
created_by: 1 
created_date: "2013-07-29T20:39:47.981Z" 
is_hidden: false 
last_updated: null 
name: "This is only a test" 
questions: [] 
sharable: true 
+0

나는 이것을 결코 풀지는 못했지만 결국에는 내 응용 프로그램의 플랫 구조를 직렬화하는 것이었다. – Mortoc

답변