gpt4 book ai didi

python - Django 查询以检索满足相关表聚合条件的行

转载 作者:行者123 更新时间:2023-11-28 17:40:09 24 4
gpt4 key购买 nike

我真的被 Django 查询困住了,希望您能抽出几分钟时间帮我解决问题。

我有一个非常简单的模型:

class Task(models.Model):
# a tuple representing a specific item to be searched for a specific URL
instructions = models.TextField()

ASSIGNMENT_STATUS_CHOICES = (
( 'a', 'assigned' ),
( 'c', 'submitted for review' ),
( 'f', 'finished' ),
( 'r', 'rejected' ),
)

class Assignment(models.Model):
# the overall container representing a collection of terms for a page found
# by a user
user = models.ForeignKey(User)
task = models.ForeignKey(Task, related_name='assignments')
status = models.CharField(max_length=1, choices=ASSIGNMENT_STATUS_CHOICES, default='a')

我想做的是随机选择一个任务,该任务的状态分配少于 N 个!= 'r'。换句话说,我想确保每个任务都成功完成 N 次,因此如果一个工作人员请求一个任务,它需要一个任务少于 N 个处于可能导致完成的状态。

我只是完全迷失了试图找出将返回此类任务的查询。对于给定的任务,我可以测试:

task.assignments.exclude(status='r').count() < N

如果这是真的,它就是一个候选人。但是我如何查询 Task.objects 以在单个数据库查询中返回所有候选者,以便我可以随机选择一个:

Task.objects.<some magic filter>.order_by('?')[0]

如有任何帮助,我们将不胜感激!

最佳答案

从 django.db.models 导入计数

Task.objects.exclude(assignments__status='r').annotate(assignments_count=Count('assignments').filter(assignments_count__gt=N)

关于python - Django 查询以检索满足相关表聚合条件的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25559655/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com