Foros del Web » Programando para Internet » Python »

URLconf Django no puedo dar con la solución

Estas en el tema de URLconf Django no puedo dar con la solución en el foro de Python en Foros del Web. Hola, tengo un problema con un pequeña app, tiene el siguiente modelo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Python: Ver original #model.py class Capitulo ( models. Model ) ...
  #1 (permalink)  
Antiguo 21/01/2013, 16:51
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 13 años, 4 meses
Puntos: 5
URLconf Django no puedo dar con la solución

Hola, tengo un problema con un pequeña app, tiene el siguiente modelo:

Código Python:
Ver original
  1. #model.py
  2. class Capitulo(models.Model):
  3.     nombre = models.CharField(max_length=100, blank=True, null=True)
  4.     capitulo_numero = models.IntegerField()#de aqui se genera la url, el problema es que se repite
  5.     anime = models.ForeignKey(Anime)
  6.  
  7.     @models.permalink
  8.     def get_absolute_url(self):
  9.         return ('capitol_view', (), {
  10.         'slug_capitulo':self.capitulo_numero,
  11.         'slug_anime':self.anime.slug,
  12.         })
  13.  
  14. class Anime(models.Model):
  15.     titulo = models.CharField(max_length=100)
  16.     slug = models.SlugField()#Tiene Slugo de aqui se genera la url
  17.  
  18. #views.py
  19. class Capitulo(DetailView):
  20.     model = Capitulo
  21.  
  22.     def get_object(self):
  23.         return get_object_or_404(Capitulo, capitulo_numero=self.kwargs["slug_capitulo"])

El problema viene con las urls, un capitulo se repite el numero_capitulo, por lo tanto me genera el error:

Código Python:
Ver original
  1. get() returned more than one Capitulo -- it returned 2! Lookup parameters were {'capitulo_numero': u'1'}

Se supone que es un único Anime pero varios capítulos "números" por lo tanto si creo una serie y esta tiene 10 capítulos y creo otra seria y le agrego 10 capítulos con los mismo números me genera el error, alguien me puede dar una sugerencia estaría muy agradecido.

Saludos.
  #2 (permalink)  
Antiguo 21/01/2013, 19:29
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: URLconf Django no puedo dar con la solución

1.- En el SlugField (donde guardas la URL) debería de ir un indice único. Así evitas ese error.
2.- Cuando generes el SlugField te recomiendo que sea único.
3.- El slug único lo puedes lograr concatenando el id que te genera al guardar.
4.- O si lo prefieres puedes generar un hash y tomar los primeros n letras.

Por ejemplo en unagi (próximamente udon), el nombre de cada anime es único, pero eso no significa que cada slug derivado del nombre sea único (si, pasó muchas veces durante el desarrollo), entonces lo que hace es generar un hash a partir del nombre único, tomo los primeros 10 bytes y lo concateno con el slug. Preferiría la otra solución, pero en ese momento la solución no fue tan clara.

Ejemplo de anime con hash.
  #3 (permalink)  
Antiguo 25/01/2013, 13:31
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 13 años, 4 meses
Puntos: 5
Respuesta: URLconf Django no puedo dar con la solución

Hola, gracias por responder, mira lo que yo estaba tratando era que el capitulo del anime en el urlconf quedara así:

El dominio que usare solo será un ejemplo:

Cita:
ejemplo.com/naruto shippuden-01.html
no funciona porque debo agregarle también el slug del anime quedando así:
Cita:
ejemplo.com/naruto-shippuden/naruto-shippuden-01.html
Yo estaba tratando de sacar el slug solo con el numero del capitulo por eso me generaba el error anterior, para tener que evitar la url larga y repetir naruto-shipudden dos veces. Agradezco si me puedes ayudar, saludos.

Etiquetas: django
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:05.