Django:从 Pandas 到 Django Rest 框架的模型查询集
Posted
技术标签:
【中文标题】Django:从 Pandas 到 Django Rest 框架的模型查询集【英文标题】:Django: Model Queryset to Pandas to Django Rest Framework 【发布时间】:2019-10-28 15:15:31 【问题描述】:我正在尝试在我的 Django 项目中完成以下工作流程:
-
查询我的数据库
将返回的查询集转换为 pandas 数据帧,以便执行一些计算和过滤
将最终数据帧传递给 Django REST API 框架
如果我理解正确,我必须在第 2 步中使用 django-pandas。在第 3 步中使用 Django REST Pandas。 我安装了两者并阅读了文档,但我不知道如何使它工作。
到目前为止,我已经完成了设置我的模型、视图、序列化和 url 以通过 Django Rest 框架呈现原始查询集。
如果有人能给我关于如何将 pandas 集成到这个工作流程中的提示,我们将不胜感激。
我的 models.py 文件
from django.db import models
class Fund(models.Model):
name = models.CharField(max_length=100)
commitment_size = models.IntegerField(blank=True, null=True)
commitment_date = models.DateField(blank=True, null=True)
def __str__(self):
return self.name
我的views.py文件
from rest_framework import generics
from rest_framework.views import APIView
from pages.models import Fund
from .serializers import FundSerializer
class FundAPIView(generics.ListAPIView):
queryset = Fund.objects.all()
serializer_class = FundSerializer
我的 serializers.oy 文件
from rest_framework import serializers
from pages.models import Fund
class FundSerializer(serializers.ModelSerializer):
class Meta:
model = Fund
fields = ('name', 'commitment_size', 'commitment_date')
【问题讨论】:
我不确定 pandas 是如何改变查询集的,但是看看覆盖get_queryset()
,也许这就是你想要放置你的 pandas 逻辑的地方。 django-rest-framework.org/api-guide/filtering
【参考方案1】:
所以我想通了。首先需要安装django-pandas和django rest framework(但不需要安装django REST pandas)
models.py 和 serializers.py 文件与上面相同,但视图文件不同
from rest_framework.views import APIView
from rest_framework.response import Response
from django_pandas.io import read_frame # Import django_pandas.io read frame
from pages.models import Fund
from .serializers import FundSerializer
class TestData(APIView):
authentication_classes = []
permission_classes = []
def get(self, request, format=None):
data = Fund.objects.all() # Perform database query
df = read_frame(data) # Transform queryset into pandas dataframe
df['testcolumn'] = "testdata" # Perform some Pandas Operation with dataframe
return Response(df) # Return the result in JSON via Django REST Framework
【讨论】:
以上是关于Django:从 Pandas 到 Django Rest 框架的模型查询集的主要内容,如果未能解决你的问题,请参考以下文章
django中使用pandas,将queryset转化为dataframe,Django-pandas
为 Django 模板中的 Highcharts 从 Pandas 数据帧格式化 JSON