Foros del Web » Programando para Internet » Python »

Modelos Django

Estas en el tema de Modelos Django en el foro de Python en Foros del Web. Hola amigos de ForosDelWeb. La idea de este post es para mejorar mi modelo que vengo haciendo y es para un sitio de sinopsis de ...
  #1 (permalink)  
Antiguo 17/12/2012, 04:26
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 12 años, 9 meses
Puntos: 5
Modelos Django

Hola amigos de ForosDelWeb. La idea de este post es para mejorar mi modelo que vengo haciendo y es para un sitio de sinopsis de películas y series:

Tenemos Película, Categoría, Director, Productora, Actor.

He pensado en el modelo principal Película, como cada película puede tener asociadas varias categorías la relación será con ManyToMany, para el director una relación Foreignkey, para productora igual que la anterior y para el actor será una relación ManyToMany, Quedando:

Código Python:
Ver original
  1. class Pelicula(models.Model):
  2.     #.....
  3.     categoria = models.ManyToMany('Categoria')
  4.     director = models.ForeignKey('Director')
  5.     productora = models.ForeignKey('Productora')
  6.     actor = models.ManyToMany('Actor')
  7.     lanzamiento = models.IntegerField()

Tengo varias dudas al respecto, yo luego quiero filtrar las entradas solo por directores, actores, productora y categoría, ademas de filtrar también por años, pero no se si lanzamiento también requiera de una relación como las otras para poder filtrarlas con request. Director, Productora, Actor tendran unos atributos sencillos en CharField().

Concretando la idea es saber si lo que estoy haciendo esta bien y si es posible filtrar las entradas por lanzamiento ejemplo:

Cita:
lanzamiento = 2012
http://myapps.com/ano/2012
Saludos y gracias.
  #2 (permalink)  
Antiguo 17/12/2012, 10:45
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Modelos Django

Si, si vas a poder.

(Opcional): Igual usaría un campo DateField para el día y el mes.

peliculas_lanzadas_en_2012 = Pelicula.objects.filter(lanzamiento=2012)
  #3 (permalink)  
Antiguo 18/12/2012, 19:33
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 12 años, 9 meses
Puntos: 5
Respuesta: Modelos Django

Quería Preguntar si es posible filtrar por la ID.
Código Python:
Ver original
  1. class PeliculaList(ListView):
  2.     model = Pelicula
  3.     paginate_by = 9
  4.     queryset = Pelicula.objects.all()
  5.  
  6. class PeliculaDetail(DetailView):
  7.     model = Pelicula
  8.     def get_object(self):
  9.         return get_object_or_404(Pelicula, slug__exact=self.kwargs['slug'])
  10.     def get_context_data(self, **kwargs):
  11.         context = super(PeliculaDetail, self).get_context_data(**kwargs)
  12.         place = self.get_object()
  13.         context['genero'] = Genero.objects.filter(pelicula=place.id)
  14.         return context

Estoy intentando que aparezca en cada película el genero de dicha película, el contexto de arriba no me funciona, estuve intentando varias formas, quizás alguien me pueda sugerir algún método.

Saludos y Gracias.
  #4 (permalink)  
Antiguo 18/12/2012, 20:02
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Modelos Django

Voy asumir que este tema esta relacionado.

Código Python:
Ver original
  1. class PeliculaDetail(DetailView):
  2.     model = Pelicula
  3.     def get_object(self):
  4.         return get_object_or_404(Pelicula, slug__exact=self.kwargs['slug'])
  5.     def get_context_data(self, **kwargs):
  6.         context = super(PeliculaDetail, self).get_context_data(**kwargs)
  7.         place = self.get_object()
  8.         context['genero'] = place.genero_set.all()
  9.         return context
  #5 (permalink)  
Antiguo 18/12/2012, 22:44
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 12 años, 9 meses
Puntos: 5
Respuesta: Modelos Django

Hola muchas gracias, te pregunto como itero sobre genero en el template y si en el caso de tener uno o mas contextos como quedaría?

Gracias y saludos.
  #6 (permalink)  
Antiguo 18/12/2012, 23:06
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Modelos Django

Si es desde el template y tienes acceso al objeto pelicula (en tu ejemplo de arriba place).

Puedes hacer lo siguiente:
Código Python:
Ver original
  1. {% for genero in pelicula.genero.all %}
  2.     {{ genero }}
  3. {% endfor %}
  #7 (permalink)  
Antiguo 19/12/2012, 04:21
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 12 años, 9 meses
Puntos: 5
Respuesta: Modelos Django

Cita:
Iniciado por razpeitia Ver Mensaje
Si es desde el template y tienes acceso al objeto pelicula (en tu ejemplo de arriba place).

Puedes hacer lo siguiente:
Código Python:
Ver original
  1. {% for genero in pelicula.genero.all %}
  2.     {{ genero }}
  3. {% endfor %}
Gracias, y si quisiera pasarle un render a genero especialmente a un field llamado contenido.

Actualmente lo tengo así:

Código Python:
Ver original
  1. {% for genero in generos.descripcion.render_url %}
  2.  
  3. #Esta es la idea mas o menos pero no funciona:
  4. {% for genero in pelicula.genero.all %}
  5. {{ genero.titulo }}
  6. {{ genero. slug }}
  7. {{ genero.contenido.render_url }}# Este es el que tiene el render que es un split definido como funcion en el modelo.
  8. {{ endfor }}

Espero me puedas ayudar ya en esto ultimo, gracias.
  #8 (permalink)  
Antiguo 19/12/2012, 10:06
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Modelos Django

Código Python:
Ver original
  1. #Esta es la idea mas o menos pero no funciona:
  2. {% for genero in pelicula.genero.all %}
  3. {{ genero.titulo }}
  4. {{ genero. slug }}
  5. {{ genero.contenido.render_url }}# Este es el que tiene el render que es un split definido como funcion en el modelo.
  6. {% endfor %}

Lo que pasa es que tienes mal la sintaxis.
Primero no veo el endfor del primer for. Segundo, en el segundo for haces un override de la variable genero. Tercero el cierre del for es {% endfor %} no {{ endfor }}.
  #9 (permalink)  
Antiguo 22/12/2012, 13:15
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 12 años, 9 meses
Puntos: 5
Respuesta: Modelos Django

Cita:
Iniciado por razpeitia Ver Mensaje
Código Python:
Ver original
  1. #Esta es la idea mas o menos pero no funciona:
  2. {% for genero in pelicula.genero.all %}
  3. {{ genero.titulo }}
  4. {{ genero. slug }}
  5. {{ genero.contenido.render_url }}# Este es el que tiene el render que es un split definido como funcion en el modelo.
  6. {% endfor %}

Lo que pasa es que tienes mal la sintaxis.
Primero no veo el endfor del primer for. Segundo, en el segundo for haces un override de la variable genero. Tercero el cierre del for es {% endfor %} no {{ endfor }}.
Hola, el codigo anterior no me funciona en la parte para renderizar a "contenido" ya que es una función dentro del modelo.

Código Python:
Ver original
  1. Esto no me imprime nada:
  2. {% for genero in pelicula.genero.all %}
  3. {{ genero.contenido.render_url }}
  4. {% endfor %}
  5.  
  6. Metodo en el modelo llamado "render_url" que lo saque de este mismo foro.
  7.  
  8. def render_urls(self):
  9.     return ['{0}'.format(url) for url in self.contenido.split()]

Gracias y saludos.

Etiquetas: django, modelos
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 07:27.