Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/06/2013, 19:44
Avatar de razpeitia
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: Doble relación pero una sola opción

Pero depende muchísimo de la relación que tenga un foro o un blog con un video.

¿un foro|blog solo puede tener un video?
¿un foro|blog puede tener cero, uno o mas videos?
¿un video puede tener cero, uno o mas blogs?
¿un foro|blog puede tener cero, uno o mas videos y un video puede estar en varios foros o blogs?

La primera forma me parece inmantenible, ademas de que probablemente viole alguna regla de normalización de base de datos. Que pasa si el mismo video quiero que este en varios foros o blogs? Vas a tener también redundancia de datos.

La segunda forma parece ser mas elegante (a nivel python), pero la verdad es que no lo es, ya que si quieres el mismo vídeo en un foro y en un blog vas a tener redundancia de datos.

Mi recomendación seria esta (asumiendo relación muchos a muchos):
Código Python:
Ver original
  1. class Blog(models.Model):
  2.     title = models.CharField(max_length=100)
  3.     slug = models.SlugField()
  4.     description = models.TextField()
  5.  
  6. class Foro(models.Model):
  7.     title = models.CharField(max_length=100)
  8.     slug = models.SlugField()
  9.     description = models.TextField()
  10.  
  11. class Video(models.Model):
  12.     title = models.CharField(max_length=100)
  13.     video_url = models.URLField()
  14.     created_at models.DateTimeField()
  15.     updated_at = models.DateTimeField()
  16.  
  17. class VideoBlog(models.Model):
  18.     blog = models.ForeingKey(Blog)
  19.     video = models.ForeingKey(Video)
  20.  
  21.     class Meta:
  22.         unique_together = ('blog', "video")
  23.  
  24. class VideoForo(models.Model):
  25.     foro = models.ForeingKey(Foro)
  26.     video = models.ForeingKey(Video)
  27.  
  28.     class Meta:
  29.         unique_together = ('foro', "video")

De manera general no veo por que debes de guardar las relaciones que existen entre (foro o blog) y videos.

Otra cosa te recomiendo que busques y leas sobre normalización de base de datos.