Django文件保存到sqlite3 db并检索

时间:2018-06-11 07:52:09

标签: django django-admin django-file-upload

以下是我的设备型号:

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数据库中。我是Django的新手,因此需要帮助才能达到此目的。 另外,我只会通过django admin上传文件。我该怎么做到这一点? 我应该在上传到参数时写什么,以便将文件存储在数据库中?

1 个答案:

答案 0 :(得分:0)

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

admin.py

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

admin.site.register(Device, DeviceAdmin)

Django Admin field reference

修改

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

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)

Refer

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