Как выбрать данные из фильтрованных данных для отправки POST-запроса с помощью ModelViewSet в DRF?

У меня есть модель.

class MyClass(models.Model):
    field1 = models.ForeignKey("Class1", on_delete=models.PROTECT)
    field2 = models.ForeignKey("Class2", on_delete=models.CASCADE)
    field3 = models.ForeignKey("Class3", on_delete=models.PROTECT)

Это мой ViewSet:

class MyViewSet(ModelViewSet):
    serializer_class = serializers.MySerializer

    def create(self, request, *args, **kwargs): 
        value1 = Class1.objects.filter(id__in={x.id for x in self.request.user.organization_modules})
        value2 =  Class2.objects.filter(organization=self.request.user.organization)
        value3 = Class3.objects.get(id=self.kwargs["pk"])
        obj = MyClass(field1=value1, field2=value2, field3=value3) 
        obj.save() 
        return Response(status=status.HTTP_201_CREATED)  

Это URL:

path("api/", MyViewSet.as_view({"post":"create"}))

В приведенном выше примере я переопределяю метод create метода ModelViewSet и выполняю выборку данных для сохранения данных. Но когда я обращаюсь к API, я хочу выбрать значения полей field1, field2 и field3 из отфильтрованных данных, а не из всех данных Class1, Class2 и Class3. Но в текущей реализации отображаются все данные Class1, Class2 и Class3.

Как это сделать?

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