Клонирование элементов с помощью django CreteModelMixin
У меня есть основанный на классе viewswet, который использует миксин CreateModelMixin. Когда я делаю запросы из фронта к моему viewSet, он делает все правильно, в этом случае он создает новый элемент.
Теперь я хочу использовать тот же набор представлений, но из другого набора представлений...
На самом деле я хочу сделать копию всех сервисов, которые содержит Order, я пытался несколькими способами но у меня не получилось, и теперь я думаю сделать запросы к самому viewSet, который создает сервисы.
Я уже пробовал удалять ID служб и делать .save () но это не работает ... также использую сериализатор но ничего .... Если вы видите, в первой части кода, если я могу правильно клонировать заказ, но при попытке с услугами это не работает ...
# **This works correctly**
class ServicioViewSet(
mixins.CreateModelMixin,
mixins.UpdateModelMixin,
mixins.RetrieveModelMixin,
mixins.ListModelMixin,
mixins.DestroyModelMixin,
viewsets.GenericViewSet):
queryset = Servicio_r.objects.all()
serializer_class = ServicioRserializer
// front endpoint...
await self._create(`create_service/`, self.grupoDatos, (response) => {})...
# Here I want to clone the services ... or make requests to the previous
# viewset to be able to clone them (create them)
class DuplicarOrdenViewSet(generics.ListAPIView):
queryset = Orden_trabajo.objects.all()
serializer_class = OrdenTrabajoserializer
def post(self, request, *args, **kwargs):
orden = request.data['orden']
itemsToSave = []
ordenTrabajo = Orden_trabajo.objects.get(pk = orden)
ordenTrabajo.pk = None
ordenTrabajo.save()
nuevaID_ot = ordenTrabajo.id
print('NuevaID', nuevaID_ot)
serviciosOrden = Servicio_realizados_orden_trabajo.objects.defer('id').filter(orden_trabajo_id = orden)
servicios = list(serviciosOrden.values())
print(servicios)
print('========================================')
for item in servicios:
servicio = Servicio_realizados_orden_trabajo.objects.get(pk = item['id'])
servicio.pk = None
servicio.orden_trabajo_id = nuevaID_ot
request.data = servicio
data = ServicioRealizadosViewSet.create(request, *args, **kwargs)
print(data)
r = 'OK'
return Response(r)