我正在为QuerySet中的每个项生成聚合:
def get_queryset(self):
from django.db.models import Count
queryset = Book.objects.annotate(Count('authors'))
return queryset
Run Code Online (Sandbox Code Playgroud)
但我没有得到JSON响应中的计数.
先感谢您.
我正在尝试查看Django REST Framework序列化程序中的嵌套注释(汇总/计算)字段。这样可以更清晰地处理带注释的字段。这篇文章与Django Rest Framework序列化程序中的Aggregate(和其他带注释的)字段相似,但是我希望使用类似的技术来嵌套。在该方法下面可以看到无嵌套的工作方式以及嵌套似乎不起作用的方法。
我知道这可以手动实现(使用Django View),也可以使用使我不感兴趣的数据库过载的方法来实现。但是,也许有一个性能卓越的解决方案可以解决此问题。
以下作品(未嵌套)
楷模
class IceCreamCompany(models.Model):
name = models.CharField(max_length=255)
class IceCreamTruck(models.Model):
company = models.ForeignKey('IceCreamCompany', related_name='trucks')
capacity = models.IntegerField()
class IceCreamTruckDriver(models.Model):
name = models.CharField(max_length=255)
first_name = models.CharField(max_length=255)
truck = models.ForeignKey('IceCreamTruck', related_name='drivers')
Run Code Online (Sandbox Code Playgroud)
序列化器
class IceCreamTruckDriverSerializer(serializers.ModelSerializer):
class Meta:
model = IceCreamTruckDriver
fields = ('name', 'first_name')
class IceCreamTruckSerializer(serializers.ModelSerializer):
drivers = IceCreamTruckDriverSerializer(many=True, read_only=True)
class Meta:
model = IceCreamTruck
fields = ('capacity', 'drivers')
class IceCreamCompanySerializer(serializers.ModelSerializer):
trucks = IceCreamTruckSerializer(many=True, read_only=True)
amount_of_trucks = serializers.IntegerField()
class Meta:
model = IceCreamCompany
fields = …Run Code Online (Sandbox Code Playgroud)