Проверка данных метода сохранения модели не работает должным образом - PullRequest
0 голосов
/ 30 января 2019

Я бью пробел, может быть, вы можете помочь мне повернуть в правильном направлении.

Метод модели:

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

Что я делаю не так?

...