在zinnia-blog中按时间顺序显示条目

时间:2013-11-24 11:58:01

标签: django zinnia

如何按时间顺序显示百日草博客的条目,即从最旧到最新?

我尝试更改和调整基于类的视图或管理器,但似乎没有任何工作,我总是得到通常的“最新到最旧”的命令。

更新 第一次尝试是按时间顺序显示条目的管理器。

from zinnia.managers import EntryPublishedManager

class EntryPublishedManagerFromStart(EntryPublishedManager):
    """Manager to retrieve published entries in reverse order"""

    def get_query_set(self):
        return super(EntryPublishedManagerFromStart, self
                    ).get_query_set().order_by('creation_date')

class MyEntry(EntryAbstractClass):
    """ This Entry can be displayed in chronological order. """

    fromstart = EntryPublishedManagerFromStart()

    class Meta(EntryAbstractClass.Meta):
        abstract = True
在settings.py中

ZINNIA_ENTRY_BASE_MODEL = 'blog.entry.MyEntry'
在views.py中

class EntryIndexFromStart(EntryIndex):
    """ View returning the archive index in chronological order. """
    queryset = Entry.fromstart.all
在urls.py中

...
url(r'^fromstart/?$',
    blogviews.EntryIndexFromStart.as_view(),
    name='zinnia_entry_archive_fromstart'),

但这显示了通常的最新到最旧的订单。当我像这样改变经理时......

    def get_query_set(self):
        return super(EntryPublishedManagerFromStart, self
                   #).get_query_set().order_by('creation_date')
                    ).get_query_set().order_by('-creation_date')

......显示不变,这很奇怪。

下一次尝试是一个基于功能的简单视图:

def fromstart(request):
    entries = Entry.objects.filter(status=PUBLISHED).order_by('creation_date')
    return render(request, 'zinnia/entry_archive.html',
                  {'entry_list': entries,
                   'object_list': entries,
                   'is_paginated': False})

现在条目从最旧到最新,但我失去了分页。

(我很抱歉在问题的第一个版本中如此简洁。但我想,对于这个看似简单的要求,必须有一些简单明了的答案,只有我无法理解。我不得不承认,我仍然遇到基于类视图的问题。我很难找到功能的位置,我想改变它。)

也许问题是由zinnia.entry.CoreEntry中的Meta.ordering引起的:

class CoreEntry(models.Model):
    ...
    class Meta:
        ...
        ordering = ['-creation_date']

我不知道如何覆盖它。

1 个答案:

答案 0 :(得分:0)

抱歉,回复手机。需要编辑

你可以扩展Zinia的入门模型Zinnia docs有一节就此而言。然后覆盖Meta.ordering,如您所述。

可能类似

类MyCoreMeta(CoreEntry.Meta)   排序= ['+ creation_date']

class MyCoreEntry(CoreEntry):   元= MyCoreMeta

然后创建自己的抽象入门类,如Zinnia docs中所述,用MyCoreEntry替换CoreEntry。