予約システムを開発しています。
bookingデータがスケジュール表の中に含まれていたらif文でfalseを入れるというソースを書きたいのですが、以下の条件でif文の中に入っていきません。
とても初歩的なことだと思うのですが、変につまづいてしましました。ご意見をお願いします。
python
1 booking_data = Booking.objects.filter(staff=staff_data).exclude(Q(start__gt=end_time) | Q(end__lt=start_time)) 2 for booking in booking_data: 3 local_time = localtime(booking.start) 4 booking_date = local_time.date() 5 booking_hour = local_time.hour 6 if (booking_hour in calendar) and (booking_data in calendar[booking_hour]): 7 calendar[booking_hour][booking_date] = False
models
1class Booking(models.Model): 2 staff = models.ForeignKey(Staff, verbose_name='スタッフ', on_delete=models.CASCADE) 3 first_name = models.CharField('姓', max_length=100, null=True, blank=True) 4 last_name = models.CharField('名', max_length=100, null=True, blank=True) 5 tel = models.CharField('電話番号', max_length=100, null=True, blank=True) 6 remarks = models.TextField('備考', default='', blank=True) 7 start = models.DateTimeField('開始時間', default=timezone.now) 8 end = models.DateTimeField('終了時間', default=timezone.now)
debugしている環境は以下の通りです。
booking_hour:10
booking_data:
<QuerySet [<Booking: aa2021/09/21 10:00 ~ 2021/09/21 10:00新宿店:test@aaa.co.jp>]>
calender:
{10: {datetime.date(2021, 9, 19): True, datetime.date(2021, 9, 20): True, datetime.date(2021, 9, 21): True, datetime.date(2021, 9, 22): True, datetime.date(2021, 9, 23): True, datetime.date(2021, 9, 24): True, datetime.date(2021, 9, 25): True}, 11: {datetime.date(2021, 9, 19): True, datetime.date(2021, 9, 20): True, datetime.date(2021, 9, 21): True, datetime.date(2021, 9, 22): True, datetime.date(2021, 9, 23): True, datetime.date(2021, 9, 24): True, datetime.date(2021, 9, 25): True}, 12: {datetime.date(2021, 9, 19): True, datetime.date(2021, 9, 20): True, datetime.date(2021, 9, 21): True, datetime.date(2021, 9, 22): True, datetime.date(2021, 9, 23): True, datetime.date(2021, 9, 24): True, datetime.date(2021, 9, 25): True}}
※hour10のdatetime.date(2021, 9, 21)はcalendarに含まれています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。