pythonDjango Rest框架。如何获取自定义Json响应?

pythonDjango Rest框架。如何获取自定义Json响应?,python,json,django-rest-framework,Python,Json,Django Rest Framework,我正在尝试在满足条件时发出消息(如果Ingredite.saldo您需要发送自定义响应,则应覆盖create而不是perform\u create。请尝试以下操作: class CreateOrderView(generics.ListCreateAPIView): """ Esta clase maneja los requests GET y POST. """ queryset = Order.objects.all() serializer_cla

我正在尝试在满足条件时发出消息(如果Ingredite.saldo您需要发送自定义响应,则应覆盖
create
而不是
perform\u create
。请尝试以下操作:

class CreateOrderView(generics.ListCreateAPIView):
    """
    Esta clase maneja los requests GET y POST.
    """
    queryset = Order.objects.all()
    serializer_class = OrderSerializer

    def create(self, request, *args, **kwargs):
        """
        Guarda la info al crear una nueva ORDEN. RESTA del stock.
        Controla el saldo mínimo.Devuelve el precio sugerido.
        """
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save()

        # Your code-snippet starts from here
        post = self.request.POST
        lista_productos = json.loads(post.get('productos'))
        precio_hora_trabajada = SystemParameters.objects.get(id=1).precio_hora_trabajada

        serializer.instance.costo_total = costo_total_orden(post)
        serializer.instance.save()

        horas_trabajadas_total = 0
        for prod in lista_productos:
            producto = Product.objects.get(pk=prod['id'])
            Products.objects.create(order=serializer.instance,
                                    product=producto, cantidad=prod['cantidad'])
            for ingred in producto.supplies_set.all():
                cantidad_por_ingrediente = producto.supplies_set.get(supply=ingred.supply_id).cantidad
                ingrediente = ingred.supply
                ingrediente.saldo -= cantidad_por_ingrediente * Decimal(prod['cantidad'])
                ingrediente.save()

                if ingrediente.saldo <= ingrediente.saldo_minimo:
                    alerta = 'Alerta: el supply llegó al stock mínimo'
                    content = {'alerta': alerta}
                    return Response(content)
                continue

            horas_trabajadas_total += producto.horas_trabajadas

        serializer.instance.precio_sugerido = (serializer.instance.costo_total * 3) + (
                    precio_hora_trabajada * horas_trabajadas_total)
        serializer.instance.save()
        # Your code-snippet Ended here

        headers = self.get_success_headers(serializer.data)
        return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
class CreateOrderView(generics.ListCreateAPIView):
"""
埃斯塔·克拉斯·马内加·洛斯要求得到一个很好的职位。
"""
queryset=Order.objects.all()
serializer\u class=OrderSerializer
def创建(self、request、*args、**kwargs):
"""
这是一家新的餐厅。
控制,控制,控制,控制。
"""
serializer=self.get\u序列化程序(data=request.data)
serializer.is\u有效(raise\u exception=True)
serializer.save()
#您的代码段从这里开始
post=self.request.post
lista_productos=json.load(post.get('productos'))
precio_hora_trabajada=SystemParameters.objects.get(id=1.precio_hora_trabajada)
serializer.instance.costo_total=costo_total_orden(post)
serializer.instance.save()
horas_trabajadas_总计=0
对于lista_productos中的产品:
producto=Product.objects.get(pk=prod['id'])
Products.objects.create(order=serializer.instance,
product=producto,cantidad=prod['cantidad'])
对于producto.supplies\u set.all()中的ingred:
cantidad\u por\u ingrediente=producto.supplies\u set.get(supply=ingred.supply\u id).cantidad
ingrediente=ingred.supply
ingrediente.saldo-=cantidad_por_ingrediente*十进制(prod['cantidad']))
ingrediente.save()
if ingrediente.saldo谢谢!从rest_框架导入状态和返回响应({'orden':serializer.data,'alerta':alerta},status=status.HTTP_201_CREATED,headers=headers)添加此项修复了此问题。
class CreateOrderView(generics.ListCreateAPIView):
    """
    Esta clase maneja los requests GET y POST.
    """
    queryset = Order.objects.all()
    serializer_class = OrderSerializer

    def create(self, request, *args, **kwargs):
        """
        Guarda la info al crear una nueva ORDEN. RESTA del stock.
        Controla el saldo mínimo.Devuelve el precio sugerido.
        """
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save()

        # Your code-snippet starts from here
        post = self.request.POST
        lista_productos = json.loads(post.get('productos'))
        precio_hora_trabajada = SystemParameters.objects.get(id=1).precio_hora_trabajada

        serializer.instance.costo_total = costo_total_orden(post)
        serializer.instance.save()

        horas_trabajadas_total = 0
        for prod in lista_productos:
            producto = Product.objects.get(pk=prod['id'])
            Products.objects.create(order=serializer.instance,
                                    product=producto, cantidad=prod['cantidad'])
            for ingred in producto.supplies_set.all():
                cantidad_por_ingrediente = producto.supplies_set.get(supply=ingred.supply_id).cantidad
                ingrediente = ingred.supply
                ingrediente.saldo -= cantidad_por_ingrediente * Decimal(prod['cantidad'])
                ingrediente.save()

                if ingrediente.saldo <= ingrediente.saldo_minimo:
                    alerta = 'Alerta: el supply llegó al stock mínimo'
                    content = {'alerta': alerta}
                    return Response(content)
                continue

            horas_trabajadas_total += producto.horas_trabajadas

        serializer.instance.precio_sugerido = (serializer.instance.costo_total * 3) + (
                    precio_hora_trabajada * horas_trabajadas_total)
        serializer.instance.save()
        # Your code-snippet Ended here

        headers = self.get_success_headers(serializer.data)
        return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)