def create(self, validated_data): request = self.context.get('request') if not request.session.session_key: request.session.save() session_id = request.session.session_key poll_pk = self.context.get('view').kwargs.get('poll_pk') question_pk = self.context.get('view').kwargs.get('question_pk') choice_pk = self.context.get('view').kwargs.get('choice_pk') poll = get_object_or_404(Poll, pk=poll_pk) question = get_object_or_404(Question, pk=question_pk, poll=poll) choice = None if question.question_type == 'multiple_choice': choice = get_object_or_404(Choice, pk=choice_pk, question=question) answer = Answer( session_id=session_id, question=question, poll=poll, choice=choice, numeric_answer=None, date_answer=None, ) else: raise serializers.ValidationError( "This is not a valid type question.") try: answer.save() except: answer = get_object_or_404(Answer, session_id=session_id, question=question, poll=poll) answer.choice = choice answer.save() return answer