gpt4 book ai didi

python - 在 Django Rest Framework 中为自定义字段序列化数据

转载 作者:太空宇宙 更新时间:2023-11-04 05:46:12 26 4
gpt4 key购买 nike

我的models.py如下:

class Prescription(models.Model):
pr_id = models.CharField()
date_prescribed = models.DateTimeField()
doctor = models.ForeignKey('Doctor')
pharmacy = models.ForeignKey('Pharmacy')

class Doctor(models.Model):
name = models.CharField()
age = models.IntegerField()

class Pharmacy(models.Model):
name = models.CharField()
status = models.CharField()

现在我需要获取从本月开始按月分组的所有 pr_id 的计数并返回 6 个月。此数据需要在 json 中,因为它需要发送到 Angular 以呈现折线图。我正在使用Django 休息框架。我的views.py如下:

class PrescriptionTrendListView(generics.ListAPIView):
end_date = datetime.utcnow().date()
start_date = end_date + relativedelta(months=-6)
queryset = (Prescription.objects.extra(select={'month': connection.ops.date_trunc_sql('month', 'date_prescribed')})
.filter(date_prescribed__range=(start_date,end_date))
.values('month')
.annotate(Count('pr_id'))
.order_by('month'))
serializer_class = LineGraphSerializer

查询集之所以有效,是因为我在 shell 中进行了尝试,它为我提供了正确的数据,如下所示:

>>> queryset
[{'pr_id__count': 16, 'month': datetime.datetime(2015, 2, 1, 0, 0, tzinfo=<UTC>)},
{'pr_id__count': 71, 'month': datetime.datetime(2015, 3, 1, 0, 0, tzinfo=<UTC>)},
{'pr_id__count': 75, 'month': datetime.datetime(2015, 4, 1, 0, 0, tzinfo=<UTC>)},
{'pr_id__count': 96, 'month': datetime.datetime(2015, 5, 1, 0, 0, tzinfo=<UTC>)},
{'pr_id__count': 99, 'month': datetime.datetime(2015, 6, 1, 0, 0, tzinfo=<UTC>)},
{'pr_id__count': 93, 'month': datetime.datetime(2015, 7, 1, 0, 0, tzinfo=<UTC>)},
{'pr_id__count': 39, 'month': datetime.datetime(2015, 8, 1, 0, 0, tzinfo=<UTC>)}]

但是,我不确定如何创建 LineGraphSerializer。查询集提供的两个字段是 ID 的计数和不在初始模型中的月份。如何创建序列化程序文件?

最佳答案

您可以为 View 集表示的同一类使用 ModelSerializer(在您的情况下为处方)并使用 ReadOnlyField 添加自定义字段。像这样的东西:

class LineGraphSerializer(serializers.ModelSerializer):
pr_id__count = serializers.ReadOnlyField()
month = serializers.ReadOnlyField()

class Meta:
model = Prescription
fields = ['pr_id__count', 'month']

它可能需要一些调整,但这是总体思路。

关于python - 在 Django Rest Framework 中为自定义字段序列化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32183010/

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