【发布时间】:2020-08-04 02:21:40
【问题描述】:
我有 3 个模型:
- 任务:一项任务,可以分配给多个员工。
-
AssignedUser:(桥接表)存储分配给任务的员工
-
completed:表明employee是否已经完成了分配的任务。
-
- 员工:一名员工,可以处理许多任务。 (Extends from Django's user model)
class Task(models.Model):
name = models.CharField(max_length=50)
detail = models.TextField()
employees = models.ManyToManyField('Employee', through='AssignedUser', related_name='tasks')
class AssignedUser(models.Model):
task = models.ForeignKey(task, on_delete=models.CASCADE)
employee = models.ForeignKey(Employee, on_delete=models.CASCADE)
completed = models.BooleanField(default=False)
class Employee(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
department = models.ForeignKey(to=Department, on_delete=models.CASCADE, null=False)
# Note - department field is not relevant to this question.
如果我想选择一个任务名称和尚未完成任务的已分配员工的用户名 (completed=False),我该如何使用 Django 的 ORM?
这是我为所需结果编写的等效 SQL,我不知道如何使用 Django 的 ORM 来实现。
SELECT t.name, u.username
FROM appname_task t
JOIN appname_assigneduser au
ON (t.id = au.work_id AND au.completed = false)
JOIN appname_employee ae
ON (au.employee_id = ae.id)
JOIN auth_user u
ON (ae.user_id = u.id)
【问题讨论】:
标签: django django-models