Python ';QuerySet';对象没有属性'';cantidad“U更新”;
你好吗?我在尝试减去这些值时出现了这个错误在IF中,如果数量_更新大于0,则减去该值。如果它不只是减去数量 models.py:Python ';QuerySet';对象没有属性'';cantidad“U更新”;,python,django,Python,Django,你好吗?我在尝试减去这些值时出现了这个错误在IF中,如果数量_更新大于0,则减去该值。如果它不只是减去数量 models.py: class Pedido(models.Model): especialidad = models.ForeignKey('Especialidad') articulo = models.ForeignKey('Articulo') fecha_entrega = models.DateTimeField(auto_now_add=Fal
class Pedido(models.Model):
especialidad = models.ForeignKey('Especialidad')
articulo = models.ForeignKey('Articulo')
fecha_entrega = models.DateTimeField(auto_now_add=False, null=True, blank=True)
fecha_pedido = models.DateTimeField(auto_now_add=False,null=True, blank=True)
cantidad = models.IntegerField(blank=True, default=0)
estado = models.CharField(max_length=20, blank=True)
cantidad_update = models.IntegerField(blank=True, default=0)
estado_update = models.CharField(max_length=20, blank=True)
class Articulo(models.Model):
cod_experto = models.CharField(max_length=999, primary_key=True, blank=True)
nombre = models.CharField(max_length=999, blank=True)
on_delete=models.CASCADE)
stock = models.IntegerField(blank=True, default=0)
Views.py查询:
def Entregar(request, id_especialidad):
if request.method == 'GET':
especialidad = Especialidad.objects.get(id=id_especialidad)
pedido = Pedido.object.filter(especialidad=especialidad).filter(estado='pendiente')
if pedido.cantidad_update > 0: #Here is the error!
pedido.articulo.stock -= pedido.cantidad_update
else:
pedido.articulo.stock -= pedido.cantidad
pedido.save()
pedido2 = Pedido.objects.filter(especialidad=especialidad).filter(estado='pendiente').update(estado='entregado').update(fecha_entrega=datetime.date.today())
return HttpResponseRedirect('/solicitar/lista_super/%s/' % id_especialidad)
这将是相关的,我不知道我失踪,一些帮助请 变化
pedido = Pedido.object.filter(especialidad=especialidad).filter(estado='pendiente')
`到
出现错误的原因是filter()
返回Queryset
,而不是Pedido对象
变化
pedido = Pedido.object.filter(especialidad=especialidad).filter(estado='pendiente')
`到
出现错误的原因是
filter()
返回Queryset
,而不是Pedido对象
但在您的情况下,为什么要使用过滤器而不是get
只要有数据要检索,就使用pedido=pedido.object.filter(specialidad=specialidad.filter(estado='pendiente')[0]
。但是当没有数据时,?查询失败,页面返回500错误。因为None
queryset将没有0th
元素。
考虑使用get\u object\u或_404
,因为您想要获取单个对象。使用会失败的东西
def Entregar(request, id_especialidad):
if request.method == 'GET':
especialidad = get_object_or_404(Especialidad, id=id_especialidad)
pedido = get_object_or_404(Pedido, especialidad=especialidad, estado='pendiente')
if pedido.cantidad_update > 0: # Here is the error!
pedido.articulo.stock -= pedido.cantidad_update
else:
pedido.articulo.stock -= pedido.cantidad
pedido.save()
pedido2 = get_object_or_404(Pedido, especialidad=especialidad, estado='pendiente')
pedido2.update(estado='entregado').update(fecha_entrega=datetime.date.today())
return HttpResponseRedirect('/solicitar/lista_super/%s/' % id_especialidad)
但在您的情况下,为什么要使用过滤器而不是get 只要有数据要检索,就使用
pedido=pedido.object.filter(specialidad=specialidad.filter(estado='pendiente')[0]
。但是当没有数据时,?查询失败,页面返回500错误。因为None
queryset将没有0th
元素。
考虑使用get\u object\u或_404
,因为您想要获取单个对象。使用会失败的东西
def Entregar(request, id_especialidad):
if request.method == 'GET':
especialidad = get_object_or_404(Especialidad, id=id_especialidad)
pedido = get_object_or_404(Pedido, especialidad=especialidad, estado='pendiente')
if pedido.cantidad_update > 0: # Here is the error!
pedido.articulo.stock -= pedido.cantidad_update
else:
pedido.articulo.stock -= pedido.cantidad
pedido.save()
pedido2 = get_object_or_404(Pedido, especialidad=especialidad, estado='pendiente')
pedido2.update(estado='entregado').update(fecha_entrega=datetime.date.today())
return HttpResponseRedirect('/solicitar/lista_super/%s/' % id_especialidad)
这里有什么错误?“我不知道!真的不知道:/这里有什么错误?“我不知道!真的不知道:/很好,非常感谢,但我对这个解决方案只有一个问题,因为我只执行一个数量订单的减法,其他数量\u update>0的问题还没有解决,所以在这种情况下,它只处理了第一个订单中的一个。如何用一个以上的数量完成,谢谢你的好心情!在迭代中使用
,例如:用于Pedido.object.filter(xxx)中的p:
,这就是解决问题的方法@当筛选后没有数据时,使用[0]的DemarCreate失败,这将导致500错误。检查我的回答它工作正常,非常感谢,但我对此解决方案只有一个问题,因为我只执行一个数量订单的减法,其他数量_update>0的问题还没有解决,所以在这种情况下,它只处理了第一个订单中的一个。如何用一个以上的数量完成,谢谢你的好心情!在
迭代中使用,例如:用于Pedido.object.filter(xxx)中的p:
,这就是解决问题的方法@当筛选后没有数据时,使用[0]的DemarCreate失败,这将导致500错误。检查我的答案你的答案很全面!你的答案很全面!