有没有办法在将文件更改为django中的合适模型后将文件上传到数据库?

时间:2017-11-11 15:12:58

标签: python django django-models django-admin

如果管理员用户上传文件(如csv文件格式等),我想制作管理页面,更改合适的模型后保存在数据库中。例如,假设用户上传了以下文件。

year month survived ticket
2002  08      1     cn-101
2001  09      0     cn-102
2002  11      1     cn-103

我想要做的是当用户在管理页面上传此文件时,它将文件更改为如下所示的模型并保存在数据库中。

class SampleModel(models.Model):
   year = models.IntegerField()
   month = models.IntegerField()
   survived = models.booleanField()
   ticket = models.CharField()

有没有办法在Django中做到这一点???

1 个答案:

答案 0 :(得分:0)

您可以继承save_model方法,如下所示

# admin.py
from django.contrib import admin

class SampleAdmin(admin.ModelAdmin):
  def save_model(self, request, obj, form, change):
    file_path = request.FILES['myfile']
    with open(file_path) as f:
      for line in f:
        year, month, survived, ticket = f.split()
        SampleModel.objects.create(year=year, 
                                   month=month, 
                                   survived=bool(int(survived)), 
                                   ticket=ticket)
    super().save_model(request, obj, form, change)