Django - 显示约会日期
Django - Show dates of appointments
我想显示未在模板中预订约会的日期。出于这个原因,我到目前为止:
# Collect only the dates so that i can find what is not in that range.
example_dates = Appointment.objects.values_list('start_appointment', flat=True)
# Initialize start and end date
start_date = datetime.date.today()
end_date = start_date + datetime.timedelta(days=5)
# Initialize new list that will include records does not exists
not_found_dates = []
# Loop through in date range and if date does not exists
# Create a dict and add it to the list
for n in range(int((end_date - start_date).days)):
new_date = start_date + datetime.timedelta(days=n)
if new_date not in not_found_dates:
not_found_dates.append(new_date)
print(new_date)
# Get original queryset
examples = Appointment.objects.filter(start_appointment__range=(start_date, end_date)).values('start_appointment')
print(examples)
# Convert it to a list
examples = list(examples)
return render(request, 'appointments/add-appointment.html', {'examples': examples, 'not_found_dates': not_found_dates})
当我从循环中打印 new_date
时,我得到:
2021-11-22
2021-11-23
2021-11-24
2021-11-25
2021-11-26
以及来自 examples
returns 的查询,我在 2021-11-23 的 (2) 和 2021-11-22 的 (1) 范围内在数据库中有 3 个约会。
是否可以显示未预约的日期,即 2021-11-24、2021-11-25、2021-11-26。
您将获得定义时间范围内的日期列表(持续时间 num_days),其中日期不属于查询的一部分:
from datetime import date, timedelta
num_days = 5
start_date = date.today()
timeframe = [start_date + timedelta(days=d) for d in range(num_days)]
exclude = list(Transaction.objects.values_list("start_appointment", flat=True).distinct())
set(timeframe) - set(exclude)
我想显示未在模板中预订约会的日期。出于这个原因,我到目前为止:
# Collect only the dates so that i can find what is not in that range.
example_dates = Appointment.objects.values_list('start_appointment', flat=True)
# Initialize start and end date
start_date = datetime.date.today()
end_date = start_date + datetime.timedelta(days=5)
# Initialize new list that will include records does not exists
not_found_dates = []
# Loop through in date range and if date does not exists
# Create a dict and add it to the list
for n in range(int((end_date - start_date).days)):
new_date = start_date + datetime.timedelta(days=n)
if new_date not in not_found_dates:
not_found_dates.append(new_date)
print(new_date)
# Get original queryset
examples = Appointment.objects.filter(start_appointment__range=(start_date, end_date)).values('start_appointment')
print(examples)
# Convert it to a list
examples = list(examples)
return render(request, 'appointments/add-appointment.html', {'examples': examples, 'not_found_dates': not_found_dates})
当我从循环中打印 new_date
时,我得到:
2021-11-22
2021-11-23
2021-11-24
2021-11-25
2021-11-26
以及来自 examples
returns 的查询,我在 2021-11-23 的 (2) 和 2021-11-22 的 (1) 范围内在数据库中有 3 个约会。
是否可以显示未预约的日期,即 2021-11-24、2021-11-25、2021-11-26。
您将获得定义时间范围内的日期列表(持续时间 num_days),其中日期不属于查询的一部分:
from datetime import date, timedelta
num_days = 5
start_date = date.today()
timeframe = [start_date + timedelta(days=d) for d in range(num_days)]
exclude = list(Transaction.objects.values_list("start_appointment", flat=True).distinct())
set(timeframe) - set(exclude)