gpt4 book ai didi

python - 我可以过滤用户以要求在给定范围内的每个日期都匹配条目吗?

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

是否可以过滤一个查询集,以便我只检索在一个范围内的每个日期都没有匹配对象的用户?

例如,我有一个 Shift 模型,其中包含一个指向 Employee 对象的 ForeignKey 字段和一个 date_requested DateField 表示类次的日期。我还创建了以下查询,用于获取在 2015-07-192015-07-25 之间没有转换的任何用户:

Employee.objects.all().exclude(
shift__date_requested__gte=datetime.date(2015, 7, 19),
shift__date_requested__lte=datetime.date(2015, 7, 25))

不幸的是,此查询集未捕获指定从 07/19 到 07/24 的轮类的用户,但不是 07/25 的用户。是否可以进一步细化此查询以说明“2015-07-192015-07-25(含)之间与此用户关联的轮类次数必须等于这个时间范围内的天数?

编辑:这是我根据以下答案之一运行的一些代码:

首先,数据集显示 Employee #10 在 7/19 到 7/25 之间的每一天都有一个 Shift。这应该会导致它们被过滤掉:

Dataset

还有我的过滤代码

e = Employee.objects.all()
print('all employees:\n{0}'.format(e))
for day in range(19, 26):
print('filtering day {0}'.format(day))
e.filter(shift__date_requested=datetime.date(2015, 7, day))

print('filtered employees:\n{0}'.format(e))

结果输出:

all employees:
[<Employee: 12: ereiner@test.com ()>, <Employee: 10: alufson@test.com ()>, <Employee: 11: tjones@test.com ()>,
<Employee: 14: wmcgee@test.com ()>, <Employee: 13: wcarver@test.com ()>]
filtering day 19
filtering day 20
filtering day 21
filtering day 22
filtering day 23
filtering day 24
filtering day 25
filtered employees:
[<Employee: 12: ereiner@test.com ()>, <Employee: 10: alufson@test.com ()>, <Employee: 11: tjones@test.com ()>,
<Employee: 14: wmcgee@test.com ()>, <Employee: 13: wcarver@test.com ()>]

如您所见,员工 10 没有被过滤掉。我也尝试用 exclude() 换掉 filter() 但我看到了相同的结果

最佳答案

如果您希望获得在每个给定日期都没有轮类的员工的查询集:

employees = Employee.objects.all()
for day in range(19, 26):
employees = employees.filter(shift__date_requested=datetime.date(2015, 7, day))

请注意,像这样链接过滤器 does not hit the database multiple times .

关于python - 我可以过滤用户以要求在给定范围内的每个日期都匹配条目吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31547138/

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