Ayuda con: NoReverseMatch at!

publicado por: Anonymous

ayuda con este error:

Reverse for 'pedido_sub' with arguments '()' and keyword arguments 
'{'cod_experto': 'AA-0002', 'id_pedido': 53}' not found. 
1 pattern(s) tried: 
['solicitar/aprobar/(?P<id_pedido>\d+)/(?P<cod_experto>\d+)$']
  • Me marca en rojo el tag del index.html:
< a href="{% url "usuario:pedido_sub" id_pedido=ped.id cod_experto=ped.articulo.cod_experto %}" 
    type="submit"
  • El código de este botón se encuentra en views.py:
def pedido_sub(request, id_pedido, cod_experto):
    art = Articulo.objects.get(id=cod_experto)
    pedido = Pedido.objects.get(id=id_pedido)
    if request.method == 'GET':
        pedido.estado = 'entregado'
        pedido.save()
        pedido.fecha_entrega = datetime.now()
        pedido.save()
        art.stock = pedido.cantidad - art.stock
        art.save()
        return redirect('usuario:home')
    return render(request, 'index.html', {'pedido':pedido}, {'art':art})

Lo que hace el def, es extraer el id del pedido y tambien el del artículo (cod_experto), botón que modifica dos campos, esto lo hace sin problemas, pero al incorporar la resta del campo cantidad de tabla Pedido y stock de tabla Articulo, ocurre este error y no he podido corregirlo, si pueden ayudarme y aconsejarme lo agradecería mucho.

solución

Un NoReverseMatch tiene que ver con resolución de urls, lo que te esta indicando es que la url que intentas resolver cuando haces

< a href="{% url "usuario:pedido_sub" id_pedido=ped.id cod_experto=ped.articulo.cod_experto %}"
type="submit"

No coincide con ninguna de las definidas, si te fijas a detalle la definición de la misma url que te muestra el error

['solicitar/aprobar/(?P<id_pedido>\d+)/(?P<cod_experto>\d+)$'] te indica que la variable cod_experto la has definido como un digito (d+ significa que esta esperando uno o mas digitos) por ende al pasar el codigo 'AA-0002' no hace match ya que esta recibiedo caracteres

Te recomendaría que redefinieras tu url de la siguiente forma

['solicitar/aprobar/(?P<id_pedido>\d+)/(?P<cod_experto>\w+)$']

Saludos

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *