django数据库模型,其中一个字段共同

时间:2015-07-21 20:20:23

标签: django database model

我正在努力定义Django模型,因此我可以按照下图实现以下功能:

solution required

基本上,

我希望能够创建新项目(因此,我创建模型:类ProjectList)。

我想为每个项目分配通用的阶段列表,因此我创建了一个模型:class StageList。阶段列表包含每个项目的名称始终相同的阶段列表。

阶段应包含整数值,这些值是“区域”字段的平均值。

所以,我想创建一个区域列表,然后创建一个模型:class AreaList。

每个项目的AreaList可能不同。

最终用户想要看到的重要思想是:

项目1的阶段1(平均值)的值。阶段1是项目1中区域1,区域2的平均值。

阶段2是项目2中的区域1,区域2的平均值

我考虑过为AreaList做一个关系,如下所示:

area_num = models.ForeignKey(StageList, related_name='area_items')

我意识到这不是一个好方法,因为它总是与舞台列表中的特定舞台有关,但我想为不同的舞台设置几个不同的区域值。

我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我相信你正在寻找的是:

class Project(models.Model):
    pass

class Stage(models.Model):
    pass

class Area(models.Model):
    project = models.ForeignKey(Project)
    stage = models.ForeignKey(Stage)
    value = models.IntegerField()

然后,要获得您的舞台价值,您可以执行以下操作:

from django.db.models import Avg
project = Project.objects.get(...)
project_stages = Stage.objects.filter(
    area_set__project=project
).annotate(
    stage_value=Avg('area_set__value')
)
for project_stage in project_stages:
    print project_stage.stage_value