【问题标题】:How can I download the most recent uploaded file from the django admin?如何从 django 管理员下载最新上传的文件?
【发布时间】:2020-10-20 15:11:48
【问题描述】:

我正在尝试创建一种有效的方式来从 django 管理员下载最近上传的文件。这个想法是每个月左右,我都会进入 django admin 并上传一个 excel 文件。该文件稍后将使用按钮(简单的东西)下载。但是我现在拥有的(效率不高)是每个月我都会上传一个文件并从按钮更改路径。这需要了解我的用户不会理解的基本 html 和 django。总结一下这个想法,这里有一个列表:

  • 每个月左右上传一个文件
  • 让 html 中的按钮下载最新添加的文件(自动)

我想过很多事情,例如在上传文件时设置时间戳,并让按钮下载具有最近“创建日期”的文件。但是,我无法让它发挥作用,即使我这样做了,这会是一种简单/推荐的方法吗?我也想过重命名文件的能力,但同样,您需要对 django 管理员有基本的了解,这不是我希望我的用户必须做的。

有什么我可以做的吗?非常感谢任何帮助,在此先感谢。

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    所以我猜你正在将文件保存在模型中。 如果您使用 File.objects.latest('id') 命令会怎样?
    这将为您提供最近上传的文件。然后,您可以将其传递给您的 html 按钮。这样您就不必每次都更新路径。

    models.py

    class File(models.Model):
        name = models.CharField(max_length=64)
        actual_file = models.FileField(upload_to='files')
    

    views.py:

    def index(request):
        # Store most recent uploaded file    
        file = File.objects.latest('id')  
        # Store file name (Whatever you called it inside your db)
        file_name = file.name
        actual_file = file.actual_file
        return render(request, "website/index.html", {   
            "file": actual_file,
            "name": file_name
        })
    

    HTML:

     <a href="media/{{file}}" download> Download </a>
    

    【讨论】:

    • 嘿!感谢您的回答。我现在遇到了一些麻烦,但我确信这是解决问题的方法。当我让它工作时,我会标记它是正确的!
    • 太棒了。如果您需要更多帮助,请告诉我?
    • 你好。我收到错误:“OperationalError at / no such column: pages_files.name”,它指向这一行:“file = File.objects.latest('id')”。我必须在 html 中导入一些东西吗?
    • 确保首先在 django admin 中创建一个文件。你设置好根目录了吗?
    • 嘿,我有点麻烦,后来意识到(如你所说),我没有上传适当名称的文件。我已经这样做了,我现在正试图确定另一个问题。但是,是的,非常感谢!
    猜你喜欢
    • 2019-08-27
    • 2017-07-04
    • 1970-01-01
    • 2017-01-12
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 2017-03-16
    相关资源
    最近更新 更多