django Queryset exclude()多个数据

时间:2018-05-13 11:34:35

标签: django

我有这样的数据库方案。

# periode
+------+--------------+--------------+
| id   | from         | to           |
+------+--------------+--------------+
| 1    | 2018-04-12   | 2018-05-11   |
| 2    | 2018-05-12   | 2018-06-11   |
+------+--------------+--------------+

# foo
+------+---------+
| id   | name    |
+------+---------+
| 1    | John    |
| 2    | Doe     |
| 3    | Trodi   |
| 4    | son     |
| 5    | Alex    |
+------+---------+

#bar
+------+---------------+--------------+
| id   | employee_id   | periode_id   |
+------+---------------+--------------+
| 1    | 1             |1             |
| 2    | 2             |1             |
| 3    | 1             |2             |
| 4    | 3             |1             |
+------+---------------+--------------+

我需要显示不在employee中的salary

现在我喜欢这个

queryset=Bar.objects.all().filter(periode_id=1)
result=Foo.objects.exclude(id=queryset)

但是它失败了,如何过滤员工名单而不是薪水?...

1 个答案:

答案 0 :(得分:1)

那么你基本上想要foo,以便period_id=1表中没有Bar

我们可以让这项工作:

ex = Bar.objects.all().filter(periode_id=1).values_list('employee_id', flat=True)
result=Foo.objects.exclude(id__in=ex)