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 (将#修改为@)