0

私はモデルアイテムを持っています:

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)

私のテンプルにはそのようなものがあり、テンプルのコンテキストでItemsをItem.objects.all()として設定します。

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

私が本当に望んでいるのは、コメントがすべてアイテムごとにcreated_dateでソートされることです。内部genericRelationをソートする方法を設定するにはどうすればよいですか?

4

1 に答える 1

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

于 2013-03-25T09:18:29.647 に答える