Как получить два набора запросов в представлении списка - PullRequest
0 голосов
/ 31 января 2019

У меня есть 2 модели вопроса, расширяющие базовую модель вопроса:

class Question(models.Model):
    title = models.CharField(blank=False, max_length=200)
    order = models.PositiveIntegerField(default = 0)
    is_actuve = models.BooleanField(default = False)

class OptionQuestion(Question):
    is_bulletpoint = models.BooleanField(default=False)
    has_others = models.BooleanField(default=False)
    has_context = models.BooleanField(default=False)
    options = ArrayField(models.CharField(max_length=100), verbose_name='گزینه‌ها')


class ItemQuestion(Question):
    pass

Изначально у меня была аннотация класса Question, но мне был нужен уникальный идентификатор для всех вопросов, и теперь мне нуженСписок APIView для них обоих.У меня есть 2 сериализатора для OptionQuestion и ItemQuestion соответственно.Мне просто нужно реализовать представление, которое будет обрабатывать запрос списка вопросов и обрабатывать их с соответствующим сериализатором.

class QuestionListView(ListAPIView):
    serializer_class_OptionQuestion = OptionQuestionSerializer
    serializer_class_ItemQuestion = ItemQuestionSerializer

    def get_queryset_OptionQuestion(self):
        #???

1 Ответ

0 голосов
/ 31 января 2019

Вы можете попробовать это

class QuestionListView(ListAPIView):
   serializer_class_OptionQuestion = OptionQuestionSerializer
   serializer_class_ItemQuestion = ItemQuestionSerializer

   def get(self, request, *args, **kwrgs):
      if request.method == 'GET':
          query1 = Question.objects.all()
          query2 = OptionQuestion.objects.all()

          seralizer1 = self.serializer_class_OptionQuestion(query1)
          seralizer2 = self.serializer_class_ItemQuestion(query2)

          return Response(
             {
               'data1':seralizer1.data,
               'data2':seralizer2.data,
             }
          )

Надеюсь, это сработает для вашей проблемы

...