0

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

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

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

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']

我不知道如何覆盖它。

4

1 回答 1

0

不好意思,用手机回复。需要编辑

您可以扩展 Zinia 的入门模型 Zinnia docs 对此有一个部分。然后覆盖 Meta.ordering,正如你提到的。

大概是这样的

class MyCoreMeta(CoreEntry.Meta) ordering=[´+creation_date´]

类 MyCoreEntry(CoreEntry): Meta=MyCoreMeta

然后创建自己的抽象条目类,如 Zinnia 文档中所述,用 MyCoreEntry 替换 CoreEntry。

于 2013-12-03T01:52:30.113 回答