Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from rest_framework import serializers
- from quiz.models import Quiz, Sitting, Question
- class QuestionSerializer(serializers.HyperlinkedModelSerializer):
- """
- Serializer for Question model
- """
- figure = serializers.ImageField(use_url=True)
- content = serializers.CharField()
- class Meta:
- model = Question
- fields = ('figure', 'content',)
- read_only_fields = ('figure', 'content',)
- class QuizSerializer(serializers.HyperlinkedModelSerializer):
- """
- Serializer for Quiz model
- """
- title = serializers.CharField(max_length=60)
- description = serializers.CharField(allow_blank=True)
- success_text = serializers.CharField(allow_blank=True)
- fail_text = serializers.CharField(allow_blank=True)
- pass_mark = serializers.IntegerField()
- class Meta:
- model = Quiz
- fields = (
- 'title', 'description', 'success_text', 'fail_text',
- 'pass_mark',
- )
- read_only_fields = (
- 'title', 'description', 'success_text', 'fail_text',
- 'pass_mark',
- )
- class SittingSerializer(serializers.ModelSerializer):
- """
- Serializer for Sitting model
- """
- user = serializers.HyperlinkedRelatedField(
- view_name='account-detail', read_only=True
- )
- quiz = QuizSerializer()
- question_list = serializers.SerializerMethodField()
- incorrect_questions = serializers.SerializerMethodField()
- class Meta:
- model = Sitting
- fields = ('user', 'quiz', 'question_list', 'incorrect_questions',)
- read_only_fields = ('user', 'quiz', 'question_list', 'incorrect_questions',)
- def _get_questions_from_ids(self, question_list):
- """
- This method accepts a list of question Ids as an argument and returns
- a corresponding list of serialized Questions.
- """
- questions = Sitting.objects.filter(id__in=question_list)
- return map(lambda question: QuestionSerializer(question), questions)
- def get_question_list(self, obj):
- """
- Returns the list of serialized question objects in question_list
- :param obj: Object being serialized, i.e., Sitting object
- """
- return self._get_questions_from_ids(obj.question_list.split(','))
- def get_incorrect_questions(self, obj):
- """
- Returns list of incorrect questions in serialized form
- :param obj: Object being serialized, i.e., Sitting object
- """
- return self._get_questions_from_ids(obj.incorrect_questions.split(','))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement