Как выбрать данные из двух разных моделей и сохранить их на другой модели в DRF?

Я новичок в Django.

Я хочу создать единый API, который будет выбирать данные из двух разных моделей и сохранять их в некоторой другой таблице. например.

 querset1 = Model1.objects.filter(
            id__in={x.id for x in self.request.user.user_modules})

queryset2 = Model2.objects.filter(
            organization=self.request.user.organization
        )

На основе данных, выбранных из этих двух наборов запросов, я хочу сохранить их в третьей таблице.

e.g. obj = Model3(data1=data1_selected, data2=data2_selected)

Как это сделать, написав один ModelViewSEt?

Вы можете сделать это, создав пользовательский метод create в вашем ModelViewSet и выполнив необходимую логику для выбора данных из двух моделей и сохранения их в третьей модели в рамках этого метода.

Вот пример того, как может выглядеть пользовательский метод создания:

class MyModelViewSet(ModelViewSet): ... def create(self, request, *args, **kwargs): data1_selected = Model1.objects.filter( id__in={x.id for x in self.request.user.user_modules}) data2_selected = Model2.objects.filter( organization=self.request.user.organization) obj = Model3(data1=data1_selected, data2=data2_selected) obj.save() return Response(status=status.HTTP_201_CREATED)

В приведенном выше примере метод create переопределяет метод create ModelViewSet и выполняет выборку данных и сохранение их в 3-й таблице

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