如果管理员用户上传文件(如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中做到这一点???
答案 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)