【发布时间】:2020-05-15 14:28:03
【问题描述】:
我有 2 个考虑以下示例模型的 Django 模型。
class Status(models.Model):
name = models.CharField(max_length=50)
class Resolution(models.Model):
resolution_status = models.ForiegnKey(Status)
resolver_name = models.CharField(max_length="50")
所以我想做的是从分辨率模型中获取不同状态的计数。
为此,我编写了一个看起来像这样的 ORM。
status_count = Resolution.objects.values('resolution_status').annotate(status_count=Count(
'resolution_status'))
所以从上面的 ORM 中,我将从 Resolution 模型中获取不同的 resolution_status 及其计数。
所以主要问题是现在我想将查询集序列化为 JSON。为此,我编写了这样的序列化程序类。
class CountSerializer(serializers.ModelSerializer):
status_count = serializers.IntegerField()
resolution_status = serializers.CharField(source="resolution_status")
class Meta:
model = Resolution
fields = ["resolution_status", "status_count"]
从上面的序列化程序类中,我得到这样的 JSON 输出
我不想显示特定状态的 ID,而是显示名称。
例如,它应该看起来像这样。
[
{
resolution_status: "Status Name", count: 100
},
{
resolution_status: "Status Name 1", count: 120
},
{
resolution_status: "Status Name 3", count: 80
},
{
resolution_status: "Status Name 4", count: 10
}
]
我在 Google 上搜索了很多,并通过了一些 StackOverflow QA,但无法弄清楚为什么它没有添加状态名称。请任何人帮助我。
【问题讨论】:
标签: django django-rest-framework