2013-03-25 76 views
0

內部GenericRelation場我有一個模型項目:排序在Django

class Item(models.Model): 
    comments = generic.GenericRelation(Comment) 
    ... 

我的評論模式:

class Comment(models.Model): 
    """ 
    Comment object for any model which want to integrate with the comment engine 
    """ 
    content_type = models.ForeignKey(ContentType) 
    object_id = models.PositiveIntegerField() 
    content_object = generic.GenericForeignKey('content_type', 'object_id') 
    comment = models.TextField(max_length=512) 
    user = models.ForeignKey(User) 
    created_date = models.DateTimeField(auto_now_add=True) 

在我templete我有類似的東西,我在templete背景設置項目作爲Item.objects.all():

{% for item in Items %} 
    {%for comment in item.comments.all %} 
      <p> comment.comment</p> 
    {%endfor%} 
{%endfor%} 

我真的很喜歡的是,評論將全部按創建排序每個項目的d_date。我如何設置如何對內部通用關係進行排序?

回答

2

使用模型的元級

class Comment(models.Model): 
    # attrs 
    class Meta: 
     ordering = ['created_date'] 

或使用管理器,它是略微詳細你的情況

class CommentManager(models.Manager): 
    def get_queryset(self): 
     return super(CommentManager, self).get_queryset().order_by('created_date') 


class Comment(models.Model): 
    # attrs 
    objects = CommentManager() 

更多關於管理人員遇到關係: https://docs.djangoproject.com/en/dev/topics/db/managers/#controlling-automatic-manager-types

+0

的感謝!奇蹟般有效 ! – 2013-03-25 10:14:13