我正在尝试在满足条件时(例如ingrediente.saldo< = ingrediente.saldo_minimo)发出消息,告诉用户供应几乎缺货。
你能帮我弄明白怎么做吗?
views.py
class CreateOrderView(generics.ListCreateAPIView):
"""Esta clase maneja los requests GET y POST."""
queryset = Order.objects.all()
serializer_class = OrderSerializer
def perform_create(self, serializer):
"""Guarda la info al crear una nueva ORDEN. RESTA del stock. Controla el saldo mínimo.Devuelve el precio sugerido."""
serializer.save()
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()
谢谢!
答案 0 :(得分:0)
如果您需要发送自定义回复,则应覆盖create
而不是perform_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)
请参见ListCreateAPIView的代码库。