Django 使用当前模型ID进行文件上传

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界面中上传文件,并将文件与相应的模型关联起来。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程