Skip to content

Instantly share code, notes, and snippets.

@JuniorLima
Last active January 1, 2016 17:59
Show Gist options
  • Save JuniorLima/8181253 to your computer and use it in GitHub Desktop.
Save JuniorLima/8181253 to your computer and use it in GitHub Desktop.
Modelo de banco de notícias com classe abstrata ou não.
class BaseNoticia(models.Model):
publicar = models.BooleanField(default=True)
destaque = models.BooleanField(default=False)
titulo = models.CharField(max_length=100, unique=True)
conteudo = models.TextField('Conteúdo')
slug = models.SlugField(max_length=150, blank=True, unique=True)
criado_em = models.DateTimeField(auto_now_add=True)
atualizado_em = models.DateTimeField(auto_now=True)
cliques = models.IntegerField('Cliques', default=0, editable=False)
usuario = models.ForeignKey(User, related_name='user_add_%(class)ss', blank=True, null=True)
usuario_modificou = models.ForeignKey(User, related_name='user_mod_%(class)ss', blank=True, null=True)
class Noticia(BaseNoticia):
chamada = models.CharField(max_length=30)
categoria_nome = models.ForeignKey(Categoria, verbose_name='Categoria')
imagem = ImageWithThumbsField('Imagem Destaque', upload_to='pasta', sizes=((800,600),(300,225)))
class NoticiaBlog(BaseNoticia):
imagem = ImageWithThumbsField('Imagem Destaque', upload_to='pasta', sizes=((800,600),(300,225)), blank=True, null=True)
blog = models.ForeignKey(BlogUsuario, verbose_name='Blog')
class Galeria(BaseNoticia):
chamada = models.CharField(max_length=30)
imagem = ImageWithThumbsField('Imagem Destaque', upload_to='galeria', sizes=((800,600),(300,225)))
class BaseNoticiaAbstract(models.Model):
publicar = models.BooleanField(default=True)
destaque = models.BooleanField(default=False)
titulo = models.CharField(max_length=100, unique=True)
conteudo = models.TextField('Conteúdo')
slug = models.SlugField(max_length=150, blank=True, unique=True)
criado_em = models.DateTimeField(auto_now_add=True)
atualizado_em = models.DateTimeField(auto_now=True)
cliques = models.IntegerField('Cliques', default=0, editable=False)
usuario = models.ForeignKey(User, related_name='user_add_%(class)ss', blank=True, null=True)
usuario_modificou = models.ForeignKey(User, related_name='user_mod_%(class)ss', blank=True, null=True)
class Meta:
abstract = True
class Noticia(BaseNoticiaAbstract):
chamada = models.CharField(max_length=30)
categoria_nome = models.ForeignKey(Categoria, verbose_name='Categoria')
imagem = ImageWithThumbsField('Imagem Destaque', upload_to='pasta', sizes=((800,600),(300,225)))
class NoticiaBlog(BaseNoticiaAbstract):
imagem = ImageWithThumbsField('Imagem Destaque', upload_to='pasta', sizes=((800,600),(300,225)), blank=True, null=True)
blog = models.ForeignKey(BlogUsuario, verbose_name='Blog')
class Galeria(BaseNoticiaAbstract):
chamada = models.CharField(max_length=30)
imagem = ImageWithThumbsField('Imagem Destaque', upload_to='galeria', sizes=((800,600),(300,225)))
@JuniorLima
Copy link
Author

Suponha que eu vou colocar as noticias em destaque através do campo DESTAQUE

No primeiro exemplo, eu tenho a tabela NOTICIA que pode ser GALERIA ou NOTICIABLOG e já fazer a filtragem direto com os resultados que possuem o booleano DESTAQUE como True.

No segundo exemplo, eu pego NOTICIA, GALERIA e BLOG e junto os resultados que possuem o booleano DESTAQUE como True.

Qual modelo utilizo você recomenda ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment