1

假设我有 2 个模型

Model Users:
       Name:
       Id:

和出席

Model Attendance:
   user: foreign_key(User)
   present: [present if login else nothing recorded]
   Date:


users = User.objects.all()
todays_present = Attendance.objects.filter(date=today)

现在例如用户 = 10 todays_present = 7

我想找出哪三个用户不在todays_present 中。

4

3 回答 3

3

您可以通过以下方式使用.exclude(…)[Django-doc]

User.objects.exclude(attendance__date=today)

这将检索在字段等于Attendance的情况下找不到no 的所有用户。datetoday

于 2021-05-03T08:00:05.923 回答
2

这应该可以让您获得实际的用户对象today(尽管 Willem Van Onsem 的解决方案更简单)。

您可能需要'attendance_set'根据您的实际型号相关名称进行调整。

users_not_present_today = User.objects.annotate(
  today_attendance_count=Count('attendance_set', filter=Q(present=True, date=today)
).filter(today_attendance_count=0)
于 2021-05-03T08:00:46.290 回答
0

首先感谢@willem 和@AKX 这两个家伙,他们让我朝着正确的方向思考。

我所做的是,首先让所有在职员工

presents = Attendance.objects.filter(date=today)

然后将它们从所有用户中排除,例如:

absent = User.objects.exclude(attendance_set__in=presents)

这个措辞是我想要的......

于 2021-05-03T09:54:32.420 回答