我的Django应用将允许用户上传Excel文件,然后将对该文件中的数据进行分析和可视化。
为处理Excel文件,我引入了FileField
模型:
class DataFile(models.Model)
file = models.FileField(upload_to='data_files')
接下来,我想为此应用创建一些API视图,这些视图将接收用户上传的文件,并使用Pandas的dataframe
对象对其进行处理,然后返回经处理的数据。
例如:
def some_api_view(request):
data_file = DataFile.objects.last()
dataframe = pandas.read_excel(data_file.file.path)
manipulated_dataframe = # ... dataframe manipulation goes on here ... #
return JsonResponse({'manipulated_dataframe': manipulated_dataframe'})
我担心的是,每个这样的API视图都需要自己读取Excel文件。是否可以通过设计API的方式来将文件读入数据帧一次(因为它将始终是同一文件),然后API视图仅负责检索此数据帧,对其进行操作并返回操纵数据?
我正在使用SQL数据库,因此无法将数据框对象本身存储在数据库中。另外,我宁愿避免将其腌制并将其腌制在字段中。
答案 0 :(得分:0)
您可以定义返回模型的函数,而不是在API视图中读取excel文件。
class DataFile(models.Model):
file = models.FileField(upload_to='data_files')
#Other fields here
def get_dataframe(self):
dataframe = pandas.read_excel(self.file.path)
return dataframe
为所需对象调用此函数。