2013-07-08 2 views
0

내 포럼 앱에서 각 카테고리의 최신 게시물을 얻으려고합니다. 내 템플릿에 postID, title, userpub_date : 내가 값을 사용 할 수 있도록하려면 Category.objects.order_by('catID').annotate(latestpost=Post.objects.order_by('-pub_date')[:1]) 같은 일을 시도했습니다.카테고리에 대한 최신 게시물 가져 오기

models.py :

class Category(models.Model): 
    catID = models.CharField(max_length=20, primary_key=True) 
    title = models.CharField(max_length=200) 
    description = models.CharField(max_length=200) 

class Post(models.Model): 
    postID = models.CharField(max_length=10, primary_key=True) 
    catID = models.ForeignKey(Category) 
    user = models.CharField(max_length=100) 
    title = models.CharField(max_length=200) 
    content = models.TextField() 
    pub_date = models.DateTimeField(auto_now=True) 

views.py :

def index(request): 
    cats = Category.objects.order_by('catID').annotate(latestpost=Post.objects.order_by('-pub_date')[:1]) 
    context = {'forum_cats': cats} 
    return render(request, 'forums/index.html', context) 

답변

1

한 가지 방법은

class Category(models.Model): 
    catID = models.CharField(max_length=20, primary_key=True) 
    title = models.CharField(max_length=200) 
    description = models.CharField(max_length=200) 

    def latest_post(self): 
     post = self.post_set.order_by('-pub_date') 
     if post: 
      return post[0] 
     return None 

및 템플릿에

,

{% for cat in forum_cats %} 
    {% if cat.latest_post %} 
     {{cat.latest_post.title}} 
    {% endif %} 
{% endfor %} 
+0

와우. 정말 멋지다! 감사합니다 :) – Jeremy

+0

또는 여기에 설명 된 간단한'get_latest_by' 모델 메타 옵션을 사용하십시오 (https://docs.djangoproject.com/en/dev/ref/models/options/#get-latest-by) –

관련 문제