Django 使用当前模型ID进行文件上传
在本文中,我们将介绍如何在Django的admin界面中使用当前模型ID进行文件上传的方法。
阅读更多:Django 教程
1. 创建Django应用程序
首先,我们需要创建一个Django应用程序。我们可以使用以下命令创建一个名为”myapp”的应用程序:
$ python manage.py startapp myapp
接下来,我们需要将应用程序添加到项目的设置文件中。在settings.py文件的INSTALLED_APPS
部分中添加’myapp
‘,如下所示:
INSTALLED_APPS = [
...
'myapp',
...
]
2. 创建模型
在我们开始设置admin文件上传之前,我们需要创建一个包含文件上传字段的模型。在myapp文件夹中的models.py文件中添加以下代码:
from django.db import models
class MyModel(models.Model):
name = models.CharField(max_length=100)
file = models.FileField(upload_to='uploads/')
def __str__(self):
return self.name
在上面的代码中,我们创建了一个名为MyModel的模型,它有一个CharField用于存储名称,并且还有一个FileField用于存储上传的文件。’upload_to’参数指定了文件上传的路径。
3. 在admin界面注册模型
接下来,我们需要在admin界面中注册我们创建的模型。打开myapp文件夹中的admin.py文件,添加以下代码:
from django.contrib import admin
from .models import MyModel
@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
list_display = ('name',)
在上面的代码中,我们使用@admin.register装饰器来注册我们的模型,并创建一个名为MyModelAdmin的admin类。我们还通过list_display属性指定了在admin界面中显示的字段。
4. 修改admin界面的模板
Django的admin界面默认情况下使用一个名为_change_form.html的模板来显示表单。我们需要修改这个模板以在文件上传表单中包含当前模型ID。创建一个名为change_form.html的文件,并将其放在myapp/templates/admin/myapp/文件夹中。在文件中添加以下代码:
{% extends "admin/change_form.html" %}
{% block field_sets %}
{{ block.super }}
{% if original %}
<input type="hidden" name="id" value="{{ original.id }}">
{% endif %}
{% endblock %}
在上面的代码中,我们使用了模板继承来扩展原始的_change_form.html模板。我们在field_sets
块中添加了一个隐藏的表单字段,用于存储当前模型的ID。
5. 运行测试服务器
现在,我们可以运行我们的测试服务器,以查看我们的更改是否生效。在命令行中运行以下命令启动Django的测试服务器:
$ python manage.py runserver
然后,在浏览器中访问http://localhost:8000/admin
,使用超级用户登录。进入MyModel的编辑页面,您将看到一个包含文件上传字段和当前模型ID的表单。
总结
在本文中,我们介绍了如何在Django的admin界面中使用当前模型ID进行文件上传。我们创建了一个包含文件上传字段的模型,并在admin界面中注册了这个模型。然后,我们修改了admin界面的模板,以包含当前模型的ID。通过这样的设置,我们可以方便地在admin界面中上传文件,并将文件与相应的模型关联起来。