Django注释计数不适用于多对多表
我有一个Django模型的层次结构(简化为要点): 项目/模型.pyDjango注释计数不适用于多对多表,django,count,many-to-many,annotate,Django,Count,Many To Many,Annotate,我有一个Django模型的层次结构(简化为要点): 项目/模型.py 类项目(models.Model): @财产 def材料(自身): return=m2m\u Assembly\u Components.objects.filter(Assembly\u room\u project=self).聚合(count=models.count('component')) 教室(模型.模型): 项目=模型。外键(“项目”,相关_name=“房间”) 类程序集(models.Model): 房间=型
类项目(models.Model):
@财产
def材料(自身):
return=m2m\u Assembly\u Components.objects.filter(Assembly\u room\u project=self).聚合(count=models.count('component'))
教室(模型.模型):
项目=模型。外键(“项目”,相关_name=“房间”)
类程序集(models.Model):
房间=型号。外键(“房间”,相关的_name=“组件”)
components=models.ManyToManyField(“material.Component”,通过=“m2m\U Assembly\U components”)
m2m类组件组件(型号):
组件=型号。外键(“材料。组件”)
组件=型号。外键(“组件”)
材料/型号.py
类组件(models.Model):
name=models.CharField(最大长度=200)
我想获得与某个项目相关的m2m_Assembly_组件中所有组件的列表及其编号
类似于“项目1有7个A型组件和3个B型组件”
为此,我在项目类中使用材质属性,但我只得到一个m2m\U组件对象列表和一个计数值1
谁能告诉我我做错了什么
编辑07.042016 12:11
我让它工作了,但不是很好:
@属性
def材料(自身):
return=m2m\u Assembly\u Components.objects.filter(Assembly\u room\u project=self)。值('component\u name','component\u articlenumber')。注释(count=models.count('component'))
不幸的是,这给了我一个dict而不是对象,我必须定义我需要的所有值:
{'component_uuuarticleum':'021123','count':17,'component_uuuname':'abdeckramen,E2,蒽醌,1-fach'}
组件的类型是什么?它是名称字段吗?您是指用于计数功能的“组件”!?组件的类型是什么?它是名称字段吗?您是指用于计数功能的“组件”!?