Django ORM中的复杂查询

时间:2018-06-29 09:09:08

标签: django orm django-aggregation django-annotate

如果Django中的ManyToMany关系,我正在尝试对整个模型进行复杂的注释。

我的数据库架构大致如下:

ALTER table STUDENT drop CONSTRAINT <constraint_name>

我有一个class Contest(models.Model): tasks = models.ManyToManyField('Task', related_name='contests', blank=True, through='ContestTaskRelationship') participants = models.ManyToManyField('User', related_name='contests_participated', blank=True) class Task(models.Model): pass class ContestTaskRelationship(models.Model): contest = models.ForeignKey('Contest', on_delete=models.CASCADE, related_name='contest_task_relationship') task = models.ForeignKey('Task', on_delete=models.CASCADE, related_name='contest_task_relationship') solved = models.ManyToManyField('User', related_name='contest_task_relationship', blank=True) cost = models.IntegerField(default=0) tag = models.ForeignKey('TaskTag', on_delete=models.SET_NULL, related_name='contest_task_relationship', null=True, blank=True) 对象,需要加载其contest,如果参与者在{中,则每个对象都注有与participants相对应的直通模型对象的cost个字段的总和{1}}通过模型对象建立的m2m关系。我不知道如何进行如此复杂的注释。我尝试过使用contest进行操作,但是没有运气。有任何想法该怎么做吗?

UPD::我尝试了以下操作:

solved

,但是它只对每个子查询中的第一个Subquery求和。为什么?

0 个答案:

没有答案