首页 > 解决方案 > 在 Django 的同一视图中输出两个模型的计数

问题描述

class Album(models.Model):
    title = models.CharField(max_length=100, blank=True, default='')
    price = models.FloatField()
    upload_time = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ('upload_time',)

 class Status(models.Model):
    user_id = models.IntegerField()
    album_id = models.IntegerField()
    favorite = models.BooleanField(default=False)
    purchase = models.BooleanField(default=False)
    history = models.BooleanField(default=False)

    def __str__(self):
        return self.user_id

ModelViewSet我这样写:

class index(viewsets.ModelViewSet):
    serializer_class = AlbumSerializer
    queryset = Album.objects.all()

在此处输入图像描述

如上图所示,我需要输出每个的购买次数Album,例如Album1 已购买 4 次,Album3 已购买 1 次。

但是现在,我的索引视图只生成Album数据模型中的字段。

我应该怎么做才能实现这一点,为每个添加购买编号Album?需要你的帮助...

标签: pythondjangodjango-rest-framework

解决方案


你可以在你的序列化程序类中添加这样的东西来计算它:

class AlbumSerializer(serializers.ModelSerializer):
    purchase_count =  serializers.SerializerMethodField(read_only=True)


    def get_purchase_count(self, obj):
        return Status.objects.filter(album_id=obj.id, purchase=True).count()

推荐阅读