问题描述
我是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 (将#修改为@)