Hola chicos, he venido aprendiendo mucho el tema de DRY en Django, pero aun sigo teniendo varios problemitas, supongamos el siguiente modelo:
Tengo un Blog y un Foro, ambas aplicaciones en teoría debería compartir otra aplicación que se requiere con una relación "ForeignKey".
Código Python:
Ver original#apps blog
class Blog(models.Model):
title = models.CharField(max_length=100)
slug = models.SlugField()
description = models.TextField()
#apps foro
class Foro(models.Model):
title = models.CharField(max_length=100)
slug = models.SlugField()
description = models.TextField()
#apps video
from blog.models import Blog
from foro.models import Foro
class Video(models.Model):
blog = models.ForeingKey(Blog, null=True, blank=True)
foro = models.ForeingKey(Foro, null=True, blank=True)
title = models.CharField(max_length=100)
video_url = models.URLField()
created_at models.DateTimeField()
updated_at = models.DateTimeField()
La aplicación blog y foro no comparten los mismos atributos literalmente, de serlo se que podría heredar de otra clase abstract. Bueno básicamente tenemos la aplicación video que ambas aplicaciones harán uso. Que me recomiendan así esta bien o genero un modelo de video por cada aplicación:
Código Python:
Ver originalclass VideoAbstract(models.Model):
title = models.CharField(max_length=100)
video_url = models.URLField()
created_at models.DateTimeField()
updated_at = models.DateTimeField()
class Meta:
abstract = True
class ForoVideo(VideoAbstract):
foro = models.ForeingKey(Foro)
class BlogVideo(VideoAbstract):
blog = models.ForeingKey(Blog)
Cual de estas opciones es mucho mejor, la idea del ejemplo primero es mantener todos los enlaces de video en una sola tabla y por el tema de DRY.
Gracias y un saludos