Как добиться определенного типа API в Django rest framework
Я новичок в Django rest framework и хочу получить такой вид API:
{
question_no: "1",
question: "How many sides are equal in a scalene triangle?",
options: [
{ que_options: "3", selected: false, isCorrect: true },
{ que_options: "2", selected: false, isCorrect: true },
{ que_options: "0", selected: false, isCorrect: true },
],
},
Как я могу достичь вышеупомянутого типа API?
Я пытался заставить его работать с помощью следующего кода, но он не работает:
from django.db import models
# Create your models here.
class AnswerOptions(models.Model):
option= models.CharField(max_length=500)
isCorrect = models.BooleanField(default=False)
class Quiz(models.Model):
question = models.TextField()
options = models.ManyToManyField(AnswerOptions)
Для достижения такого вида api вам необходимо создать соответствующий сериализатор. Он должен выглядеть примерно так:
class AnswerOptionSerializer(serializers.ModelSerializer):
class Meta:
model = AnswerOption
fields = ('__all__')
class QuizSerializer(serializers.ModelSerializer):
answeroption_set = AnswerOptionSerializer(many=True)
class Meta:
model = Quiz
fields = ('__all__')
Вам также нужно не забыть создать правильное представление. Если вы предполагаете вывести список результатов, то я бы использовал ListAPIView.
class MyListView(ListCreateAPIView):
permission_classes = (AllowAny,)
serializer_class = QuizSerializer
queryset = Quiz.objects.all()