Вставка записей в две таблицы с помощью одного представления во фреймворке Django rest

У меня есть три следующие модели.

class Quiz(models.Model):
   name = models.CharField(max_length=50)
   desc = models.CharField(max_length=500)    
   number_of_questions = models.IntegerField(default=1)
   time = models.IntegerField(help_text="Duration of the quiz in seconds", default="1")

   def __str__(self):
       return self.name

   def get_questions(self):
       return self.question_set.all()

class Question(models.Model):
    ques = models.CharField(max_length=200)
    quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE)

    def __str__(self):
       return self.ques

class Answer(models.Model):
   content = models.CharField(max_length=200)
   correct = models.BooleanField(default=False)
   question = models.ForeignKey(Question, on_delete=models.CASCADE)

   def __str__(self):
       return f"question: {self.question.ques }, answer: {self.content}, correct: {self.correct}"
   

Мне нужно создать api для создания вопроса. Для этого я должен использовать модель Вопрос и Ответ одновременно, например. enter image description here

это страница администратора, но я хочу создать такой же api, который принимает вышеуказанные параметры и сохраняет их в базе данных. Как написать view.py для этого api ?

Для получения представления, способного легко создавать новые объекты, необходимо использовать CreateAPIView или ListCreateAPIView.

Затем вам придется создать ModelSerializers для ваших моделей, которые будут отвечать за обработку данных, передаваемых в представление.

Помните, что если вы хотите использовать вложенные сериализаторы, вам нужно переопределить их методы create, потому что сохранение вложенных экземпляров не поддерживается DRF по умолчанию.

Я бы рекомендовал вам изучить основы DRF (сериализаторы, представления, наборы представлений...), прежде чем пытаться создавать более сложные задачи.

Вернуться на верх