首页 > 解决方案 > Django 文件保存到 sqlite3 db 和检索

问题描述

以下是我的设备型号:

class Device(models.Model):
    device_type         = models.ForeignKey(DeviceType,to_field='device_type')
    serial_number       = models.CharField(max_length=200,unique=True)
    in_use_by           = models.ForeignKey(User,to_field='username')
    brand               = models.CharField(max_length=200,default="-", null=False)
    model               = models.CharField(max_length=200,default="-", null=False)
    type_number         = models.CharField(max_length=200,blank=True,null=True, default = None)
    mac_address         = models.CharField(max_length=200,blank=True,null=True, default = None)
    invoice             = models.FileField(upload_to='', null=True)

在这里,发票字段在我的网站中对我没有用,但对我作为管理员有用。我基本上想做的是,如果设备请求被接受,我将使用管理面板将设备的发票上传到我的 sqlite db 中。我是 Django 的新手,因此需要帮助。另外,我只会通过 django admin 上传文件。我应该如何实现这一目标?我应该在上传参数中写什么以便文件存储在数据库中?

标签: djangodjango-admindjango-file-upload

解决方案


您需要使用要编辑的必填字段来配置您的管理员。

admin.py 中

class DeviceAdmin(admin.ModelAdmin):
    fields = ('device_type', 'invoice', ..)

admin.site.register(Device, DeviceAdmin)

Django Admin 字段参考

编辑

upload_to参数是您需要存储文件的路径。通常它是MEDIA_ROOTDjango 设置中配置的路径。

models.FileField(upload_to=settings.MEDIA_ROOT, null=True)

在开发过程中为此服务:

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

参考

在数据库中,只会存储文件的 URL。


推荐阅读