Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Models.py lista canciones

Estas en el tema de Models.py lista canciones en el foro de Python en Foros del Web. Buenas tardes. Quiero tener una lista de canciones en mi models.py. He pensado en hacerlo con el campo "CharField" pero no estoy muy seguro de ...
  #1 (permalink)  
Antiguo 06/05/2013, 12:05
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 9 meses
Puntos: 0
Models.py lista canciones

Buenas tardes. Quiero tener una lista de canciones en mi models.py. He pensado en hacerlo con el campo "CharField" pero no estoy muy seguro de poder hacer una lista de canciones con esto. ¿A alguien se le ocurre algo?.


Muchas gracias, un saludo.
  #2 (permalink)  
Antiguo 06/05/2013, 12:58
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: Models.py lista canciones

Ok, ya que veo que no pusiste ni un solo modelo, dejame pensar todo por ti.

Código Python:
Ver original
  1. class Artist(models.Model):
  2.     first_name = models.CharField(max_length=150)
  3.     last_name = models.CharField(max_length=200)
  4.     birthday = models.DateField(blank=True, null=True)
  5.    
  6.     def __unicode__(self):
  7.         return u'%s %s' % (self.first_name, self.last_name)
  8.  
  9. class Song(models.Model):
  10.     name = models.CharField(max_length=200)
  11.     artist = models.ForeignKey(Artist)
  12.     release_date = models.DateTimeField(default=datetime.datetime.now, blank=True, null=True)
  13.     description = models.TextField()
  14.  
  15.     def __unicode__(self):
  16.         return u'%s %s' % (self.name, self.artist)
  17.  
  18. class PlayList(models.Model):
  19.     user = models.ForeignKey(User)
  20.     name = models.CharField(max_length=100)
  21.     creation_datetime = models.DateTimeField(default=datetime.datetime.now, blank=True, null=True)
  22.  
  23.     def __unicode__(self):
  24.         return u'%s %s' % (self.user, self.name)
  25.  
  26.     class Meta:
  27.         unique_together = ('user', 'name')
  28.  
  29. class PlayListInstance(models.Model):
  30.     play_list = models.ForeignKey(PlayList)
  31.     song = models.ForeignKey(Song)
  32.     index = models.IntegerField()
  33.  
  34.     def __unicode__(self):
  35.         return u'%s %s %s' % (self.play_list, self.song, self.index)
  36.  
  37.     class Meta:
  38.         unique_together = ('play_list', 'song', 'index')

Te recomiendo leer mas sobre modelos y mas que nada sobre diseño de base datos o al menos entender como trabajan las 4 relaciones básicas OneToOne, OneToMany, ManyToOne y ManyToMany.
  #3 (permalink)  
Antiguo 06/05/2013, 13:29
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Models.py lista canciones

Si perdón ando un poco apretado de tiempo y no tuve tiempo en redactar bien mi duda. De momento quiero hacer algo mas sencillo al ejemplo que me has dado. Te pongo aquí mi models.py

En el CharField Canciones me gustaría convertir ese campo en una tupla de canciones, para poder insertarlas en una plantilla. He buscado por unos cuantos sitios y no encuentro nada que me pueda servir. Si tienes alguna idea sería de agradecer.

He intentado crear 5 campos, uno para cada canción, quedando 5 campos CharField, pero a la hora de renderizarlo me da un error de la base de datos de sqlite, he probado a modificar unicamente el nombre "Canciones" y poniendo otra cosa me salta error. No me deja añadir nuevos campos. ¿A qué se debe esto?.

Soy nuevo en el mundo Django así que perdón por si alguna de mis preguntas es un poco "tonta".

Código Python:
Ver original
  1. class Disco(models.Model):
  2.   Titulo = models.CharField(max_length=100)
  3.   Canciones = models.CharField(max_length=200)
  4.   Descripcion = models.TextField(verbose_name='Descripcion del disco')
  5.   imagen = models.ImageField(upload_to='fotos', verbose_name='Imagen')
  6.   tiempo_registro = models.DateTimeField(auto_now=True)
  7.   usuario = models.ForeignKey(User)
  8.    
  9.   def __unicode__(self):
  10.       return self.Titulo
  11.      
  12. class Comentario(models.Model):
  13.     disco = models.ForeignKey(Disco)
  14.     texto = models.TextField(help_text='Tu comentario',verbose_name='Comentario')
  15.    
  16.     def __unicode__(self):
  17.         return self.texto
  #4 (permalink)  
Antiguo 06/05/2013, 15:58
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: Models.py lista canciones

Cita:
Iniciado por abarrero90 Ver Mensaje
En el CharField Canciones me gustaría convertir ese campo en una tupla de canciones, para poder insertarlas en una plantilla. He buscado por unos cuantos sitios y no encuentro nada que me pueda servir. Si tienes alguna idea sería de agradecer.
Se me ocurre una idea, pero viola una de las reglas de normalización de base de datos.

Cita:
Iniciado por abarrero90 Ver Mensaje
He intentado crear 5 campos, uno para cada canción, quedando 5 campos CharField, pero a la hora de renderizarlo me da un error de la base de datos de sqlite, he probado a modificar unicamente el nombre "Canciones" y poniendo otra cosa me salta error. No me deja añadir nuevos campos. ¿A qué se debe esto?.
Esto ademas que viola la normalización de una base de datos se me hace una muy mala idea en general, que pasa si tienes mas de 5 canciones, que tal si tienes menos?

En cuanto al error que te aparece (el cual no pusiste ninguna información) voy asumir que es por que no tienes sincronizada el esquema de django con el que esta en la db. En cuyo caso puedes usar south para migración de esquemas de la db. O si puedes darte el lujo entonces puedes borrar las tablas de tu proyecto y volverlas a crear.

En mi opinion deberías de considerar crear un Modelo Cancion y definir el tipo de relación con Disco es la mejor manera de resolver este problema.
  #5 (permalink)  
Antiguo 07/05/2013, 14:43
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Models.py lista canciones

Bueno de momento he optado por la solución de las 5 canciones. Es simplemente un boceto de un proyecto. He optado por tener que borrar las tablas y volver a generarlas para poder modificar su estructura. Sabes si esto es debido a que estoy usando Sqlite3?.

Otra cosa, necesito añadir diferentes campos en mi models.py, entre ellos, uno de fecha y otro de dinero, me gustaría que el campo tuviese la forma dd/mm/aa, cuál es la etiqueta que permite esto?.

Una última cosa, quiero añadir css a mi aplicación para generar una interfaz más "bonita", me podriais recomendar alguna libreria en concreto?.

Muchas gracias, un salud.
  #6 (permalink)  
Antiguo 07/05/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: Models.py lista canciones

Cita:
Iniciado por abarrero90 Ver Mensaje
Bueno de momento he optado por la solución de las 5 canciones. Es simplemente un boceto de un proyecto.
Incluso para un boceto se me hace una mala elección, pero supongo que es parte de aprender. Por favor no hagas esto en un proyecto serio.

Cita:
Iniciado por abarrero90 Ver Mensaje
He optado por tener que borrar las tablas y volver a generarlas para poder modificar su estructura. Sabes si esto es debido a que estoy usando Sqlite3?.
No, esto no es especifico de sqlite3, hubiera sido lo mismo con mysql, postgres u oracle, lo que paso es que cambiaste el esquema de la db y cuando hay cambios de esquemas en la base de datos necesitas hacer una serie de cambios para que funcione el nuevo esquema, especialmente si tienes datos en la db y no quieres perderlos esto se puede volver una tarea compleja.

Cita:
Iniciado por abarrero90 Ver Mensaje
Otra cosa, necesito añadir diferentes campos en mi models.py, entre ellos, uno de fecha y otro de dinero, me gustaría que el campo tuviese la forma dd/mm/aa, cuál es la etiqueta que permite esto?.
Tu no tienes que preocuparte como la db guarda las fechas, regularmente usando models.DateField o models.DateTimeField django determina como guardar los datos de una manera eficiente dependiendo del tipo de db que estés usando. Solamente al imprimir el campo es donde te tienes que preocupar por el formato de impresion en este caso dd/mm/aa y esto depende si lo quieres hacer en el template o de preferencia agregarle un método a tu modelo donde te imprima la fecha con el formato que quieres.

Cita:
Iniciado por abarrero90 Ver Mensaje
Una última cosa, quiero añadir css a mi aplicación para generar una interfaz más "bonita", me podriais recomendar alguna libreria en concreto?.
Django ya ofrece esa función de servir contenido estático y es muy fácil si estas en el ambiente de desarrollo. Puedes leer la documentación https://docs.djangoproject.com/en/de.../static-files/

O si lo prefieres, dentro de la carpeta de tu app crea una carpeta llamada static y pon los archivos estáticos que quieras. Para ponerlo en tu template puedes referirte a los archivos estaticos por /static/<nombre de archivo> o si lo prefieres el template tag static.
  #7 (permalink)  
Antiguo 12/05/2013, 12:22
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Models.py lista canciones

Bueno creo que he avanzado bastante con mi página web, me está quedando realmente bien. A ver si me da tiempo y subo un pantallazo.

Ahora estoy encontrandome con un error en el que llevo atascado un buen tiempo. Quiero añadir vídeos en HTML5, pero mi navegador (firefox) no los reproduce, he leído que este navegador aún no esta 100% disponible para hTML5, he probado a instalar Chrome, pero al lanzar la aplicación web se queda bloqueado y bloquea toda la virtualización (trabajo sobre VirtualBox). ¿Alguien sabe cómo puedo solucionar esto?.


Muchas gracias, un saludo.
  #8 (permalink)  
Antiguo 13/05/2013, 10:11
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 8 meses
Puntos: 1329
Respuesta: Models.py lista canciones

Bueno no ha ningún navegador que implemente toda la especificación de HTML5 ya que hace poco que ha sido terminada, pero por lo menos el video HTML5 es soportado por todas las versiones recientes de navegadores: http://caniuse.com/#feat=video . Tu problema debe ser de formato y codecs (es lo feo, no todos los navegadores usas los mismos codecs y debes proporcionar varias versiones de un mismo video).

Sobre de que te bloquea la virtualización no se a que te refieres y lo que pasa en el cliente no debería afectar tu servidor, algo estás haciendo mal.


Saludos
__________________
Grupo Telegram Docker en Español

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 05:25.