2013-07-29 3 views
10

У меня есть то, что я предполагал быть довольно простой настройки сериализатора, но при попытке поместить данные в мой API, я получаю следующее сообщение об ошибке:Сериализация ManyToMany в Django Framework Rest (2.3.5) бросает ValueError

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

Вот вид:

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

и сериализаторов:

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' 
     ) 

Если я закомментировать 'вопросы' поле из QuizSerializer работает просто отлично (конечно, без каких-либо данных).

** Edit: Вот полезная нагрузка 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

ответ

1

Проблема выглядит, что вложенные представления do not support read–write и сериализации плоских структур для операций записи является путем.

Смежные вопросы