如何从 django 管理员下载最新上传的文件?
How can I download the most recent uploaded file from the django admin?
我正在尝试创建一种有效的方法来从 django 管理员下载最近上传的文件。我的想法是,每个月左右,我都会进入 django 管理并上传一个 excel 文件。该文件稍后将使用按钮下载(简单的东西)。但是我现在所拥有的(效率不高)是,每个月我都会上传一个文件并通过按钮更改路径。这需要了解基本的 html 和 django,我的用户不会理解这些。为了总结这个想法,这里有一个列表:
- 每个月左右上传一个文件
- 让 html 中的按钮下载最新添加的文件(自动)
我想到了很多事情,例如在上传文件时设置时间戳,并让按钮下载具有最新“创建日期”的文件。但是,我无法让它工作,即使我这样做了,那会是一种 easy/recommended 的方式吗?我也想到了重命名文件的能力,但同样,您需要对 django 管理有基本的了解,这不是我希望我的用户必须做的。
有什么我可以做的吗?非常感谢任何帮助,提前致谢。
所以我猜您正在将文件保存在模型中。
如果您使用 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>
我正在尝试创建一种有效的方法来从 django 管理员下载最近上传的文件。我的想法是,每个月左右,我都会进入 django 管理并上传一个 excel 文件。该文件稍后将使用按钮下载(简单的东西)。但是我现在所拥有的(效率不高)是,每个月我都会上传一个文件并通过按钮更改路径。这需要了解基本的 html 和 django,我的用户不会理解这些。为了总结这个想法,这里有一个列表:
- 每个月左右上传一个文件
- 让 html 中的按钮下载最新添加的文件(自动)
我想到了很多事情,例如在上传文件时设置时间戳,并让按钮下载具有最新“创建日期”的文件。但是,我无法让它工作,即使我这样做了,那会是一种 easy/recommended 的方式吗?我也想到了重命名文件的能力,但同样,您需要对 django 管理有基本的了解,这不是我希望我的用户必须做的。
有什么我可以做的吗?非常感谢任何帮助,提前致谢。
所以我猜您正在将文件保存在模型中。
如果您使用 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>