相关疑难解决方法(0)

如何在django-rest-framework查询集响应中添加注释数据?

我正在为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响应中的计数.

先感谢您.

python django django-rest-framework

37
推荐指数
3
解决办法
1万
查看次数

Django REST Framework序列化程序中的嵌套注释字段

我正在尝试查看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)

django django-rest-framework

2
推荐指数
2
解决办法
3386
查看次数

标签 统计

django ×2

django-rest-framework ×2

python ×1