Как выбрать данные из фильтрованных данных для отправки 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.
Как это сделать?