如何解决Django-import保存用于上传数据的文件
我是django的新手,正在寻求帮助以保存用于在django中导入数据的文件。在django管理界面中,我可以在booksmanagement下上传csv文件,并将数据上传到bookmanagement表中。但是我需要帮助将上传的文件保存到FileImported
尝试将上载的文件books.csv存储到FileImported表下的file字段。我第一次这样做,可能是我没有将rite属性传递给obj = kwargs ['file_name']。
任何帮助将不胜感激。谢谢!
import_export_books.py
class Resourcebooks(resources.ModelResource):
def get_instance(self,instance_loader,row):
try:
params = {}
for key in instance_loader.resource.get_import_id_fields():
field = instance_loader.resource.fields[key]
params[field.attribute] = field.clean(row)
return self.get_queryset().get(**params)
except Exception:
return None
def before_import(self,dataset,*args,**kwargs):
#for i,v in kwargs.items():
# print (" ",i,": ",v)
#output = file_name : books.csv
user : test
obj = kwargs['file_name']
print(obj)
file_name = kwargs.get('file_name','unkNown')
name = os.path.splitext(file_name)[0]
file_size = kwargs.get('file_size','0')
file_extension = kwargs.get('file_extension','unkNown')
user = kwargs.get('user','unkNown')
file_name_model_object = FileImported.objects.get_or_create(file=obj,filename=file_name,name=name,size=file_size,extension=file_extension,user=user)
models.py
class FileImported(models.Model):
filename = models.CharField(max_length=30)
name = models.CharField(max_length=30)
size = models.FloatField(default="1")
extension = models.CharField(max_length=30)
date = models.DateField(auto_Now_add=True)
time = models.TimeField(auto_Now_add=True)
timestamp = models.DateTimeField(auto_Now_add=True)
user = models.ForeignKey(Cuser,on_delete=models.CASCADE)
file = models.FileField(default=None,null=True)
admin.py
class BooksmanagementAdmin(admin.ModelAdmin):
list_display = ('company','book','status')
list_editable = ('company',)
list_per_page = 10
class ImportAdminbooks(ImportExportAdmin,BooksmanagementAdmin):
resource_class = Resourcebooks
pass
admin.site.register(Booksmanagement,ImportAdminbooks)
settings.py
MEDIA_ROOT = os.path.join(BASE_DIR,'mediafiles')
MEDIA_URL = '/mediafiles/'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。