viewset route modelviewset graficos graficas graficar framework detail decorators create coordenadas python django python-2.7 django-rest-framework

route - python graficos 2d



Función personalizada que realiza creación y actualización en DRF modelViewSet (2)

Bueno, según los comentarios, parece que quieres actualizar un modelo no relacionado cuando creas tu modelo de reproducción. Esto debería ser fácil.

class BreedingViewSet(viewsets.ModelViewSet): queryset = Breeding.objects.all() serializer_class = BreedingSerializer def create(self, request): # do your thing here return super().create(request)

Hola, deseo crear un método personalizado en un modelviewset que necesite realizar una lógica de guardado y actualización en una única solicitud de publicación.

Aquí está mi breeding.viewsets.py

class BreedingViewSet(viewsets.ModelViewSet): queryset = Breeding.objects.all() serializer_class = BreedingSerializer

Dado que el método anterior tiene un mayor nivel de abstracción y en realidad está proporcionando o realizando funciones CRUD automáticas.

Ahora el problema aquí es que no tengo ningún control para múltiples consultas como guardar un objeto y actualizar otro objeto en una sola solicitud de publicación.

p.ej

def save_and_update(self, request): // do save an object here. // do update an object here.

¿Cómo podemos lograr esas funcionalidades tan poderosas? ¿Me perdí algo? Encontré esta documentación pero no sé cómo implementar la instrucción dada.

ACTUALIZAR

Esto es lo que estoy buscando ¿Cómo creo varias instancias de modelo con Django Rest Framework?

Pero la respuesta solo puede save varias instancias en una sola solicitud de publicación de ese mismo modelo. Pero también espero que podamos realizar consultas para diferentes modelos en esa única función.


Use esto para crear o actualizar usando POST

class BreedingViewSet(viewsets.ModelViewSet): queryset = Breeding.objects.all() serializer_class = BreedingSerializer def get_object(self): if self.action == ''create'': queryset = self.filter_queryset(self.get_queryset()) filter_kwargs = {self.lookup_field: self.request.data.get(''id'')} obj = get_object(queryset, **filter_kwargs) self.check_object_permissions(self.request, obj) return obj else: return super(BreedingViewSet, self).get_object() def create(self, request, *args, **kwargs): if request.data.get(''id''): return super(BreedingViewSet, self).update(request, *args, **kwargs) else: return super(BreedingViewSet, self).create(request, *args, **kwargs)