【发布时间】:2018-08-29 21:33:48
【问题描述】:
我有两个模型:
class User(models.Model):
# stuff
class Task(models.Model):
# stuff
在向用户分配新任务时,我想避免分配工作人员以前获得的任务。我尝试采用的方法是添加第三个模型Assignment,它跟踪分配给给定用户的任务:
class Assignment(models.Model):
worker = models.ForeignKey(User)
task = models.ForeignKey(Task)
但是,我应该如何根据这个来形成一个查询?我的想法是从被分配到的用户过滤分配开始,但在那之后我被卡住了。
def get_tasks(worker):
previous_assignments = Assignment.objects.filter(worker=worker)
# then something like...
assignable_tasks = Task.objects.exclude(pk__in=previous_assignments.task) #clearly wrong
有没有办法访问previous_assignments 查询集中的任务ID?不确定这是否不是最好的方法,或者我只是想念如何跳过这一步。
编辑:在我看来,我可以通过循环遍历那些 Assignment 对象然后使用 __in 排除参数来填充一个空集 Tasks... 任何比这更好的方法?
【问题讨论】: