Après le débogage pendant un moment j'ai trouvé ce que l'erreur était, mais je ne sais pas comment y remédier.NoReverseMatch dans django
- J'ai un petit morceau URLConf le nom «
ver_caja
» qui reçoit comme argument l'identifiant d'un objet caja, puis appeler leobject_detail
générique. - Le jeu de requête est correct: récupérez correctement tous les objets caja.
- Dans le modèle que je la conférence téléphonique:
{% ver_caja caja.id %}
- L'objet
caja
est reçu correctement par le modèle. - J'utilise MySQL.
Le problème est que caja.id
a une valeur "1L" au lieu de "1".
Cette 1L
augmente l'erreur parce que le URLConf (ver_caja
) attend un nombre entier non alphanumérique un « <int>L
».
Toutes les informations que je suis arrivé dans le site docs django est-ce (comme un exemple dans un tutoriel), et il ne permet pas:
...
>>> p = Poll(question="What's up?", pub_date=datetime.datetime.now())
# Save the object into the database. You have to call save() explicitly.
>>> p.save()
# Now it has an ID. Note that this might say "1L" instead of "1", depending
# on which database you're using. That's no biggie; it just means your
# database backend prefers to return integers as Python long integer
# objects.
>>> p.id
...
Alors, comment pourrais-je résoudre ce problème pour recevoir caja.id=1
au lieu de caja.id=1L
?
Merci d'avance.
Pedro
EDIT: Vous avez tous les fichiers.
erreur de modèle:
Caught an exception while rendering: Reverse for 'ver_caja_chica' with arguments '(1L,)' and keyword arguments '{}' not found.
caja/models.py
class Caja(models.Model):
slug = models.SlugField(blank=True)
nombre = models.CharField(max_length=20)
saldo = models.DecimalField(max_digits=10, decimal_places=2)
detalle = models.TextField(blank=True, null=True)
# apertura
fechahora_apert = models.DateTimeField(default=datetime.datetime.now, auto_now_add=True)
usuario_apert = models.ForeignKey(Usuario, related_name=u'caja_abierta_por', help_text=u'Usuario que realizó la apertura de la caja.')
# cierre
fechahora_cie = models.DateTimeField(blank=True, null=True)
usuario_cie = models.ForeignKey(Usuario, null=True, blank=True, related_name=u'caja_cerrada_por', help_text=u'Usuario que realizó el cierre de la caja.')
def __unicode__(self):
return u'%s, $%s' % (self.nombre, self.saldo)
class Meta:
ordering = ['fechahora_apert']
class CajaChica(Caja):
dia_caja = models.DateField(default=datetime.date.today, help_text=u'Día al que corresponde esta caja.')
cerrada = models.BooleanField(default=False, help_text=u'Si la caja está cerrada no se puede editar.')
caja/urls.py
cajas_chicas = {
'queryset': CajaChica.objects.all(),
}
urlpatterns = patterns('',
url(r'^$', 'django.views.generic.list_detail.object_list', dict(cajas_chicas, paginate_by=30), name="lista_cajas_chicas"),
url(r'^(?P<object_id>\d+)/$', 'django.views.generic.list_detail.object_detail', dict(cajas_chicas,), name="ver_caja_chica"),
)
cajachica_list.html
...
<table>
{% for obj in object_list %}
<tr class="{% cycle 'row1' 'row2' %}">
<td>{{ obj.nombre|capfirst }}</td>
<td>{{ obj.fechahora_apert|timesince }}</td>
<td>{{ obj.usuario_apert }}</td>
<td>{{ obj.saldo }}</td>
<td><a href="{% url ver_caja_chica obj.pk %}">Ver/Editar</a></td>
</tr>
{% endfor %}
</table>
...
EDIT-2 Avec une mauvaise URLconf (à but), ce sont les urls pour cette application:
...
4. ^caja/$ ^$
5. ^caja/$ ^(?P<object_id>\d+)/$
...
Peut-être que l'URL finale est été construit mal par django.
Ces URL se trouvent à l'intérieur de caja/urls.py et sont incluses par urls.py dans le répertoire racine du projet.
Un indice?
Ajoutez les lignes réelles de 'urls.py' à la question - je pense que c'est où le problème sera. '1L' est juste la façon d'imprimer un entier long de python - je ne pense pas que ce sera le problème. >>> a = 1L >>> un 1L >>> str (a) '1' >>> –
I ajouté la totalité du code de débogage. : P Il semble clair dans le texte d'erreur que l'erreur est dans le paramètre ('1L'). Si ce n'est pas le problème, alors je ne sais pas ... – pmourelle
Essayez de regarder les objets que vous obtenez pour le jeu de requête. Est-ce que tous ont un int long? Comment stockez-vous cela dans le db? – googletorp