tognere 2 Report post Posted July 6, 2014 boa tarde....sou iniciante em django e estou com uma dúvida...espero que VCs possam me ajudar....desde já agradeço!!! estou desenvolvendo um blog pessoal e criei um menu com 4 itens de postagem...INDEX...SOBRE...ARTIGOS...PROJETOS...(a postagem esta funcionando) no item sobre...é uma postagem que vou falar sobre mim... no artigo são postagens sobre determinados assuntos.... em projetos sao postagens sobre alguns trabalho com desenvolvimentos meu... e meu problema é no index...eu gostaria que no index chamassem as postagens do menu ARTIGOS e PROJETOS....só que eu naum queria que fosse mostrado separadamente....eu gostaria que fosse mostrado em ordem do mais recente entre os dois juntos.... meu models ta assim: from django.db import models class Sobre(models.Model): titulo = models.CharField(max_length=100) imagem = models.ImageField(upload_to = "blog/uploads/sobre") conteudo = models.TextField() def __unicode__(self): return "%s" % (self.titulo) class Artigo(models.Model): titulo = models.CharField(max_length=100) imagem = models.ImageField(upload_to = "blog/uploads/artigos") conteudo = models.TextField() data = models.DateField() def __unicode__(self): return "%s - %s - %s" % (self.titulo,self.conteudo,self.data) class Projeto(models.Model): titulo = models.CharField(max_length=100) imagem = models.ImageField(upload_to = "blog/uploads/projetos") conteudo = models.TextField() data = models.DateField() def __unicode__(self): return "%s" % (self.titulo) minhas urls ta assim: from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', # Examples: # url(r'^$', 'marciotognere.views.home', name='home'), # url(r'^blog/', include('blog.urls')), url(r'^$','blog.views.index'), #index url(r'^sobre/$','blog.views.sobre'), #chama sobre url(r'^artigos/$','blog.views.artigos'), #chama artigos url(r'^projetos/$','blog.views.projetos'), #chama projetos url(r'^admin/', include(admin.site.urls)), #chama painel de controle ) minha views ta assim: # -*- coding:utf8 -*- from django.shortcuts import render from django.http import HttpResponse from blog.models import Sobre, Artigo, Projeto from django.template import Context, loader #TA DANDO ERROOOO def index(request): blog_list = (Artigo,Projeto).objects.all().order_by('-id') t = loader.get_template('index.html') c = Context({'blog_list':blog_list,}) return HttpResponse(t.render(c)) def sobre(request): blog_list = Sobre.objects.all().order_by('-id') t = loader.get_template('sobre.html') c = Context({'blog_list':blog_list,}) return HttpResponse(t.render(c)) def artigos(request): blog_list = Artigo.objects.all().order_by('-id') t = loader.get_template('artigos.html') c = Context({'blog_list':blog_list,}) return HttpResponse(t.render(c)) def projetos(request): blog_list = Projeto.objects.all().order_by('-id') t = loader.get_template('projetos.html') c = Context({'blog_list':blog_list,}) return HttpResponse(t.render(c)) Share this post Link to post Share on other sites
_Isis_ 202 Report post Posted July 8, 2014 Vamos por partes... Primeiro os modelos... from blog.models import Sobre, Artigo, Projeto def index(request): def order_by_date(obj): # Implemente a ordenação por data aqui utilizando o sorted: # https://wiki.python.org/moin/HowTo/Sorting from operator import attrgetter return sorted(obj, key=attrgetter('data'), reverse=True) blog_list = [] blog_list.extend(Artigo.objects.all()) blog_list.extend(Projeto.objects.all()) blog_list = order_by_date(blog_list) t = loader.get_template('index.html') c = Context({'blog_list':blog_list,}) return HttpResponse(t.render(c)) Ou, se você realmente quiser usar SQL: https://docs.djangoproject.com/en/dev/topics/db/sql/#executing-custom-sql-directly Eu realmente me concentraria em refinar o modelo (veja que os campos são iguais nos dois modelos): from django.db import models class Artigo(models.Model): titulo = models.CharField(max_length=100) imagem = models.ImageField(upload_to = "blog/uploads/artigos") conteudo = models.TextField() data = models.DateField() class Projeto(models.Model): titulo = models.CharField(max_length=100) imagem = models.ImageField(upload_to = "blog/uploads/projetos") conteudo = models.TextField() data = models.DateField() Como tudo será tratado como um post, eu criaria o seguinte modelo: from django.db import models class CategoriasPost(models.Model): categoria = models.CharField(max_length=40, blank=False, null=False) def __unicode__(self): return self.categoria class Post(models.Model): titulo = models.CharField(max_length=100, blank=False, null=False) conteudo = models.TextField(blank=False, null=False) # Limite depende do banco. data = models.DateField(blank=False, null=False, auto_now=True) categorias = models.ManyToManyField(TiposPost) class Meta: ordering = ('-data',) verbose_name = 'post' verbose_name_plural = 'posts' E dado que blog é algo comum de ser feito em Django, existem vários pacotes que implementam essa ideia de categorização de posts. Basta instalar e usar. * * * Quanto à página "Sobre", é uma página estática, podendo ser criada com um class-based view (https://docs.djangoproject.com/en/dev/topics/class-based-views/): Assim, as imagens ficariam num diretório static (especificado no settings.py por STATIC_ROOT) depois de você executar o comando collectstatic e poderiam ser referenciadas normalmente dentro uma página HTML simples, que não passa pelo banco de dados. (https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/) Share this post Link to post Share on other sites
tognere 2 Report post Posted July 9, 2014 muito obrigado isis....desculpa minha ignorancia ainda...é q sou iniciante em django...consegui fazer...fiz de um jeito parecido do seu... fiz um unico model chamado postagem...e nele coloquei um choices (um listbox) com os valores artigos e projetos...e no views eu programei para que no index aparece todas as postagem e no item do menu artigos aparecesse apenas as opções onde na coluna opcao do choices tivesse o nome artigos e assim consequentemente no item projetos e deu certo....muito obrigado vc me ajudou muito ... Share this post Link to post Share on other sites