Я бью пробел, может быть, вы можете помочь мне повернуть в правильном направлении.
Метод модели:
def save(self, *args, **kwargs):
query = Contract.objects.filter(rented = self.rented).exclude(id=self.id)
check_data = gatekeeper_check(self, query)
if check_data:
super(Contract, self).save(*args, **kwargs)
Функция:
def gatekeeper_check(self, query):
current_contracts = {}
for item in query:
print(item)
if (item.agreement_ends >= self.agreement_starts):
current_contracts[item.id] = f'{item.agreement_starts} - {item.agreement_ends}'
print(item.agreement_ends, item.actual_agreement_end, self.agreement_starts)
raise ValidationError(mark_safe(f'Rentable already booked for the date range: <br>' + '<br>'.join({f'Contract ID: {k} | Start-End Date: {v}' for k, v in current_contracts.items()})))
else:
return True
результат не тот, который я ожидаю:
Rentable already booked for the date range:
Contract ID: 6UOj2RnNDX6jiGlC | Start-End Date: 2019-09-30 - 2019-10-29
На текущем объекте:
start_date: 2019-01-29
end_date: 2019-04-29
В идеале это должно сэкономить, потому что в эти дни арендуемая комната не бронируется.Однако он забронирован с 2019-09-30
Что я делаю не так?