首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在django串行器中对同一模型进行“分组”

如何在django串行器中对同一模型进行“分组”
EN

Stack Overflow用户
提问于 2017-10-23 14:45:41
回答 2查看 3.2K关注 0票数 1

我刚接触过Django-Python并学习如何构建序列化程序。我理解序列化程序的基本实现,但坚持以下特定要求。

这是我的客户事件模型-

代码语言:javascript
运行
复制
class CustomerEvents(models.Model):
       account_number = models.BigIntegerField(blank=False)
       event_type = models.CharField(max_length=255, blank=False, null=False)

CustomerEvents中的样本记录:

代码语言:javascript
运行
复制
Account Number    Event Type
A12345             Billing Issues
A12345             Video Services
A12345             Sales

我想要创建一个CustomerEventsSerializer,它将返回如下值:

代码语言:javascript
运行
复制
{ 
  "account_number" : A12345, 
  "event_types"    : ['Billing Issues', 'Video Services', 'Sales']
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-23 16:46:52

您可以为它创建一个虚拟序列化程序。

代码语言:javascript
运行
复制
CustomerEventsSerializer(serializers.ModelSerializer):  
    def to_representation:(self,obj):  
        rep= super(CustomerEventsSerializer,self).to_representation(obj)  
        rep['events']= [ customer.event for customer in CustomerEvents.objects.filter(account_number=obj.account_number)]  
        return rep  
    class Meta:  
        model = CustomerEvents  
        fields = ('account_number',)
票数 1
EN

Stack Overflow用户

发布于 2017-10-23 17:01:26

您可以使用此模块https://github.com/kako-nawao/django-group-by,它允许您根据查询集进行分组并返回查询集。

代码语言:javascript
运行
复制
from django.contrib.postgres.aggregates.general import ArrayAgg

qs = CustomerEvents.objects.group_by('account_number').annotate(
        event_types=ArrayAgg('event_type')))

现在,您可以使用account_numberevent_types方法创建account_number来处理qs[0].event_types的列表。

代码语言:javascript
运行
复制
class CustomerEventsSerializer(serializers.ModelSerializer):
    event_types = serializers.ListField()

    class Meta:
        model = CustomerEvents
        fields = ('account_numer', 'event_types')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46892217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档