Django注释-如何列出自我实例?

Django注释-如何列出自我实例?,django,django-orm,django-filter,django-annotate,Django,Django Orm,Django Filter,Django Annotate,我正在尝试进行Django注释,并希望通过过滤字段列出一些对象实例 我有两个模型,分别是类别和文章。该类别模型有一个名为super\u类别的字段,该字段是一个选择字段,学院为“学术,其他” 类别(models.Model): name=models.CharField( 最大长度=128, null=False, 空白=假, 默认值=无, 详细名称=“(名称”), ) super_category=models.CharField( 空白=假, null=False, 选择=SC_选择, 最大长

我正在尝试进行Django注释,并希望通过过滤字段列出一些对象实例

我有两个模型,分别是
类别
文章
。该
类别
模型有一个名为
super\u类别
的字段,该字段是一个选择字段,学院为“学术,其他”

类别(models.Model):
name=models.CharField(
最大长度=128,
null=False,
空白=假,
默认值=无,
详细名称=“(名称”),
)
super_category=models.CharField(
空白=假,
null=False,
选择=SC_选择,
最大长度=10,
默认值=无,
)
现在,这是我目前的编年史结果:

[
{
“物品计数”:716,
"超级"类别:u"学术",,
“类别计数”:5,
}, 
{
“物品计数”:800,
“超级类别”:u“其他”,
“类别计数”:2,
}
]
对此的查询:

Category.objects.only(
“身份证”,
“文章编号”,
“超级大类”,
).价值观(
“超级大类”,
).注释(
类别计数=计数(“id”,distinct=True),
物品数量=数量(“物品”),
).订购(
“超级大类”,
)
我想做的是,将类别添加到结果中

最后,我想要这样的东西:

[
{
“物品计数”:716,
"超级"类别:u"学术",,
“类别计数”:5,
“类别”:[
{
“id”:1,
“名称”:“计算机科学”,
“物品计数”:15,
},
...
]
}, 
{
“物品计数”:800,
“超级类别”:u“其他”,
“类别计数”:2,
“类别”:[
{
“id”:1,
“名称”:“杂志”,
“物品计数”:15,
},
...
]
}
]
现在,由于附加的“类别”与我试图注释的对象类型相同,我真的不知道该怎么做

编辑

我使用的序列化程序如下所示:

类超类别序列化程序(BaseSerializer):
super\u category=fields.CharField(只读=True)
article\u count=字段。整型字段(只读=True)
类别计数=字段。整型字段(只读=真)

但请注意,我没有
超级类别
模型

将其添加到目标序列化程序中

 Cattegories = CategorySerializer(read_only=True,many=True)
然后在目标序列化程序的字段中提及它

fields = ('X','Y','Categrories')

希望这有帮助:)

请使用序列化程序。即使没有注释/。。。使用
.values()
进行序列化不是一个好主意。谢谢,我补充了我的问题。顺便说一句,我忘了提供@WillemVanOnsemIs你为什么不使用
超级分类
模型的原因?@WillemVanOnsem它是这样实现的,它的借口“超级分类”可以是2,而不是更多。超级类别只是一个字符串,没有任何信息。一个类别可以属于学术或其他类别,以后不能再创建另一个“超级类别”。