我有一个Django模型的层次结构(简化为基本要素):
项目/ models.py
class Project(models.Model):
@property
def material(self):
return = m2m_Assembly_Components.objects.filter(assembly__room__project = self).aggregate(count=models.Count('component'))
class Room(models.Model):
project = models.ForeignKey("Project", related_name="rooms")
class Assembly(models.Model):
room = models.ForeignKey("Room", related_name="assemblies")
components = models.ManyToManyField("material.Component", through="m2m_Assembly_Components")
class m2m_Assembly_Components(models.Model):
component = models.ForeignKey("material.Component")
assembly = models.ForeignKey("Assembly")
材料/ models.py
class Component(models.Model):
name = models.CharField(max_length=200)
我想获取 m2m_Assembly_Components 中所有组件条目的列表,这些条目与某个项目及其编号相关。
类似于“项目1有7个A类组件和3个B类组件”
为此,我在项目类中使用材质属性,但我只获得 m2m_Assembly_Components 对象列表和计数值为1。
有人能给我一个提示我做错了吗?
编辑07.042016 12:11
我有点工作,但不是很好:
@property
def material(self):
return = m2m_Assembly_Components.objects.filter(assembly__room__project = self).values('component__name','component__articlenumber').annotate(count=models.Count('component'))
不幸的是,这给了我一个dict而不是一个对象,我必须定义我需要的所有值:
{'component__articlenumber': '021123', 'count': 17, 'component__name': 'Abdeckrahmen, E2, anthrazit, 1-fach'}