Skip to content

Instantly share code, notes, and snippets.

@SamoiddinSalokhiddinov
Last active April 2, 2021 10:55
/********************** MODEL *********************************/
from django.db import models
from datetime import date
from django.urls import reverse
class Question(models.Model):
question_text = models.CharField(max_length=200)
# pub_date = models.DateTimeField('date published', null=True)
author = models.CharField(max_length=200, null=True)
image = models.FileField(upload_to="test/", null=True , default=False)
def __str__(self):
return self.question_text
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text
/********************** SERIALIZERS ***************************************/
class ChoiceSerializer(serializers.ModelSerializer):
class Meta:
model = Choice
fields = ('choice_text',)
class QuestionCreateSerializer(serializers.ModelSerializer):
choice_set = ChoiceSerializer(many=True)
class Meta:
model = Question
fields = "__all__"
def create(self, validated_data):
choice_validated_data = validated_data.pop('choice_set')
question = Question.objects.create(**validated_data)
choice_set_serializer = self.fields['choice_set']
for each in choice_validated_data:
each['question'] = question
choices = choice_set_serializer.create(choice_validated_data)
return question
/*********************************** VIEWS ********************************/
class QuestionCreateView(APIView):
parser_classes = (JSONParser , MultiPartParser,)
permission_classes = [permissions.IsAuthenticated]
def post(self, request, *args, **kwargs):
serializer = QuestionCreateSerializer(data=request.data)
if serializer.is_valid():
question = serializer.save()
serializer = QuestionCreateSerializer(question)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@SamoiddinSalokhiddinov
Copy link
Author

Безымянный

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment