如何在API调用之间存储数据框对象?

时间:2019-07-01 07:01:59

标签: python django

我的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数据库,因此无法将数据框对象本身存储在数据库中。另外,我宁愿避免将其腌制并将其腌制在字段中。

1 个答案:

答案 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

为所需对象调用此函数。