【发布时间】:2012-07-20 06:35:30
【问题描述】:
我想重新排序我的 cmets 以首先显示最新的。我正在使用内置的 Django cmets 框架。有没有内置的或简单的方法来做到这一点?
【问题讨论】:
标签: django django-models django-comments
我想重新排序我的 cmets 以首先显示最新的。我正在使用内置的 Django cmets 框架。有没有内置的或简单的方法来做到这一点?
【问题讨论】:
标签: django django-models django-comments
来自 Django 文档:
You can loop over a list in reverse by using {% for obj in list reversed %}.
所以,在我的模板中,我有:
{% for comment in comment_list reversed %}
你的 cmets 现在是反向的。
【讨论】:
你可以试试https://docs.djangoproject.com/en/dev/ref/contrib/comments/custom/
class ReorderComment(Comment):
class Meta:
ordering = ["-submit_date"]
在 settings.py 上
COMMENTS_APP = 'my_comment_app'
或者您可以通过创建模板标签来重新编码它们
{% get_comment_list for event as comment_list %}
{% reoder_comments comment_list as reodered_comment_list %}
reoder 模板标签看起来像(使用 django-classy-tags)
register = template.Library()
class ReoderComments(Tag):
name = 'reoder_comments'
options = Options(
Argument('queryset'),
'as',
Argument('varname', required=False, resolve=False)
)
def render_tag(self, context, queryset, varname):
context[varname] = queryset.order_by("-submit_date")
return ''
register.tag(ReoderComments)
【讨论】: