superuser - django create database
Administrador de Django-grappelli: Sin error de coincidencia inversa (6)
¿Todavía tienes ''grappelli.urls''
incluido en tu URLconf? Esa es la única razón por la que veo que causaría este error. Puede intentar usar python manage.py shell
:
from django.core.urlresolvers import reverse
print reverse(''grp_related_lookup'')
Si esta línea devuelve la URL correcta, no debería obtener un NoReverseMatch
en su plantilla.
Las comillas alrededor de grp_related_lookup
no deberían ser una preocupación. La etiqueta {% url %}
acepta las cadenas entre comillas y sin comillas como primer argumento, por lo que django lo normaliza a las cadenas entre comillas. Este comportamiento va a cambiar en el futuro: podrá pasar variables de plantilla a {% url %}
utilizando cadenas sin comillas. {% url foo %}
y {% url "foo" %}
no darán el mismo resultado; consulte las notas de la versión 1.3 para obtener detalles sobre esto.
He estado trabajando en un proyecto django desde hace un tiempo que usa grappelli para el administrador y, de repente, hoy mi plantilla change_form.html arroja el siguiente error:
Caught NoReverseMatch while rendering: Reverse for "grp_related_lookup" with arguments ''()'' and keyword arguments ''{}'' not found.
La línea ofensiva de código es la línea 38:
37 $.each(related_lookup_fields_fk, function() {
38 $("#id_" + this).grp_related_fk({lookup_url:"{% url grp_related_lookup %}"});
39 });
que está precedido por este bit de código:
var related_lookup_fields_fk = {% get_related_lookup_fields_fk adminform.model_admin %};
Obviamente es el bit {% url grp_related_lookup %}
que está causando el problema.
No entiendo cómo la plantilla está resolviendo grp_related_lookup
a grappelli.views.related.related_lookup
. He intentado reemplazar grp_related_lookup
con grappelli.views.related.related_lookup
y eso tampoco funcionó. Además, en la plantilla, la línea ofensiva se ve así:
$("#id_" + this).grp_related_fk({lookup_url:"{% url grp_related_lookup %}"});
pero en el mensaje de error se ve así:
$("#id_" + this).grp_related_fk({lookup_url:"{% url ''grp_related_lookup'' %}"});
No sé si las comillas simples que rodean a grp_related_lookup
podrían tener algo que ver con el problema o no. ¿Es así como django prestó la llamada a la función? ¿Está pasando la cadena ''grp_related_lookup''
a la etiqueta de la plantilla de URL? Si es así, ¿qué pudo haber causado que esto se rompiera de repente ?
Alguna información adicional:
- El valor de
related_lookup_fields
es una lista vacía[]
. No estoy definiendo ningún camporelated_lookup_fields
en mi admin.py -
grappelli.views.related.related_lookup
un par de declaraciones de depuración en la función de vistagrappelli.views.related.related_lookup
y no parece que se llame. - No he tocado ninguna de las plantillas recientemente.
Espero que alguien pueda señalarme en la dirección correcta ... ¡Gracias!
Tuve un problema similar con las URL y noté que necesito
{% load url from future %}
en la plantilla si quiero tener etiquetas url entrecomilladas. Eso también se menciona en la documentación oficial de django: https://docs.djangoproject.com/en/1.3/ref/templates/builtins/#url
Encontré el mismo comportamiento con Django 1.5 y Grappelli 2.4.4.
Para arreglar el problema, tuve que agregar
url(r''^grappelli/'', include(''grappelli.urls'')),
a los urlpatterns
.
Me enfrenté a este problema hoy, cuando traté de eliminar datos en el administrador. Reverse for ''app_list'' with arguments ''()'' and keyword arguments ''{''app_label'': ''''}'' not found.
He puesto la url(r''^grappelli/'', include(''grappelli.urls''))
en urls.py
La solución es bastante extraña: simplemente actualice el grappelli a la última versión. (Lo actualicé de 2.5.6 a 2.6.3)
Parece que me encuentro con este mismo problema, pero cuando ejecuto la prueba sugerida de la consola obtengo esto:
Python 2.7.9 (default, Apr 7 2015, 07:58:25)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.core.urlresolvers import reverse
>>> print reverse(''grp_related_lookup'')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Users/tsantor/.virtualenvs/project_env/lib/python2.7/site-packages/django/core/urlresolvers.py", line 579, in reverse
return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))
File "/Users/tsantor/.virtualenvs/project_env/lib/python2.7/site-packages/django/core/urlresolvers.py", line 496, in _reverse_with_prefix
(lookup_view_s, args, kwargs, len(patterns), patterns))
NoReverseMatch: Reverse for ''grp_related_lookup'' with arguments ''()'' and keyword arguments ''{}'' not found. 0 pattern(s) tried: []
Y mi urls.py
ve así:
urlpatterns = patterns(
# Admin
url(r''^grappelli/'', include(''grappelli.urls'')),
url(r''^admin/'', include(admin.site.urls), name="admin"),
# main views
#url(r''^$'', RedirectView.as_view(url=''/admin''), name=''home''),
# API
url(r''^api/'', include(''api.urls'', namespace=''api'')),
)
También tengo el último Grappelli (2.6.4) ejecutándose en Django (1.8.2). Por cierto, parece que solo ocurre cuando intento acceder y agregar o editar la vista. El panel de control y las vistas de lista funcionan.
Me enfrenté a este problema ayer. El Django-grapelli que utilicé fue el que se incluyó en la instalación de FileBrowser. Resolví el problema actualizando Django-grapelli. Sólo tipo:
pip install --upgrade django-grappelli