django 如何在DRF中从两个不同的模型中选择数据并将其保存到另一个模型中?

gmxoilav  于 2023-01-21  发布在  Go
关注(0)|答案(1)|浏览(149)

我刚认识 Django 。
我想打一个单一的API,将选择数据从两个不同的模型,并将数据保存在一些其他的表。

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

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

根据从Model1和Model2中选择的数据,我想将其保存在第三个表中。

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

如何通过编写单个ModelViewSEt来实现这一点?

wxclj1h5

wxclj1h51#

您可以通过在ModelViewSet中创建一个自定义create方法,并执行必要的逻辑从两个模型中选择数据,然后将其保存到该方法中的第三个模型中来完成此操作。
下面是一个自定义create方法的示例:
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方法覆盖ModelViewSet的create方法,执行数据选择并将其保存在第3个表中

相关问题