2013-07-29 10 views
10
atar

ben oldukça basit bir serileştirici kurulum olduğu varsayılır Ne var, ama benim API veri PUT çalıştığınızda, aşağıdaki hatayı alıyorum:Dizgeleştirme 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' 
     ) 

ben yorum yaparsanız 'soruları':

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

ve serializers: Burada

manzara QuizSerializer alanından sadece iyi çalışıyor (tabii ki soru verileri olmadan).

** Düzenleme: İşte PUT çağrı yükü var:

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

Bunu hiç çözmedim, ancak sonuçta yaptığım çalışma, yalnızca uygulamam için düz yapıları serileştirmek oldu. – Mortoc

cevap