如何让Django的filer应用程序在列表的顶部列出新文件?

2024-04-27 16:09:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我们使用django文件管理器应用程序(0.9.5,http://django-filer.readthedocs.org/en/latest/index.html)来管理我们的文件上传。工作非常好,但当你上传新的文件时,它们总是出现在列表的底部,因此不可避免地我们必须一直滚动到底部,通过巨大的文件列表找到我们刚刚上传的内容。我们希望有新上传的文件出现在顶部代替。在

我已经把文件管理器移到我们的apps目录,所以可以修改它。到目前为止,我尝试更改顺序(第313行/admin/文件夹管理.py). 将order by子句更改为使用“-modified_at”会破坏排序功能。现在,我想更改文件模型的保存方法(在/models中/文件模型.py)包括以下内容:

...
if not self.id:
    try:
        folder = self.folder if self.folder else None
        order_first = self.__class__.objects.filter(folder=folder).aggregate(
            models.Min('order'))['order__min'] - 1
        if order_first <= 1:
            self.__class__.objects.filter(folder=folder).update(
                order=models.F('order') + 1000)
                self.order = 1000 + order_first
            else:
                self.order = order_first
        except (TypeError, IndexError):
            pass
    super(File, self).save(*args, **kwargs)

这里的想法是将最近上载的项目分配到当前文件夹中最上面的项目之前的顺序,以便它出现在列表中的第一个。不幸的是,save的使用方式比我所知的要多,而且目前还不起作用。我们该怎么做这样的事情吗?在


Tags: 文件djangopy模型self文件夹管理器列表
1条回答
网友
1楼 · 发布于 2024-04-27 16:09:17

我相信我已经找到了解决办法。在/admin的第313行/文件夹管理.py是以下行:

file_qs = file_qs.order_by('order')

将其更改为:

^{pr2}$

这将反转显示顺序,以便最新的项目出现在列表中的第一位。不幸的是,它本身也破坏了分类的能力。我们有照片库,其中的文件需要以特定的顺序出现,所以排序很重要。为了解决这个问题,我们还需要更改/filer中的排序视图/视图.py通过替换

for pk in request.POST.getlist('indexes'): 

index_list = request.POST.getlist('indexes')
index_list.reverse()
for pk in index_list:

当提交新的索引时,文件管理器不知道目录的整个内容被有意地反转了,所以除非我们反转这个列表,否则每次我们移动对象时,目录的整个内容都会被翻转。反转索引列表可以适应我们对显示顺序所做的更改。在

你认为这涵盖了它,但如果有人知道任何情况下,这打破了其他东西,请留下评论。在

相关问题 更多 >