gpt4 book ai didi

Django:从 Pandas 到 Django Rest Framework 的模型查询集

转载 作者:行者123 更新时间:2023-12-04 15:39:10 26 4
gpt4 key购买 nike

我正在尝试在我的 Django 项目中完成以下工作流程:

  1. 查询我的数据库
  2. 将返回的查询集转换为 pandas 数据框以执行一些计算和过滤
  3. 将最终数据框传递给 Django REST API Framework

如果我理解正确,我必须在第 2 步中使用 django-pandas,在第 3 步中使用 Django REST Pandas。我安装了两者并阅读了文档,但我不知道如何让它工作。

到目前为止,我所取得的成就是设置我的模型、 View 、序列化和 url,以通过 Django Rest Framework 呈现原始查询集。

如果有人能给我关于如何将 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')

最佳答案

所以我想通了。首先需要安装django-pandas和django rest framework(但不需要安装django REST pandas)

models.py 和 serializers.py 文件与上面相同,但 views 文件不同

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 Framework 的模型查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58593566/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com