Python ';QuerySet';对象没有属性'';cantidad“U更新”;

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

你好吗?我在尝试减去这些值时出现了这个错误​​在IF中,如果数量_更新大于0,则减去该值。如果它不只是减去数量

models.py:

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错误。检查我的答案你的答案很全面!你的答案很全面!