У меня есть модель бронирования, которая должна проверить, доступен ли доступный предмет. Я хотел бы иметь логику определения того, доступен ли элемент централизованно, чтобы независимо от того, где я сохраняю экземпляр, этот код подтверждает, что он может быть сохранен.Показаны исключения для проверки подлинности модели на сайте администратора Django
На данный момент у меня есть этот код в пользовательской функции экономии моего класса модели:
def save(self):
if self.is_available(): # my custom check availability function
super(MyObj, self).save()
else:
# this is the bit I'm stuck with..
raise forms.ValidationError('Item already booked for those dates')
Это прекрасно работает - ошибка возникает, если элемент недоступен, и мой пункт не сохраняется. Я могу зафиксировать исключение из моего кода формы переднего конца, но как насчет сайта администратора Django? Как я могу заставить мое исключение отображаться как любая другая ошибка проверки на сайте администратора?
Я предполагаю, что я хотел написать, в одном месте, то, что обеспечивало, что экземпляр не может быть сохранен, что нарушили мои правила проверки - поскольку функция сохранения вызывается независимо от того, где вы делаете свою экономию (админ или передняя часть), имеет смысл ее поместить. –
Да, но ValidationError используется для информирования конечного пользователя, что информация, которую он вводит в форму, неверна. Если вы должны заверить, что некоторые правила сохранены, возможно, вы должны использовать утверждение? Или, если сохранение может просто потерпеть неудачу, возможно, вам нужно просто получить код возврата, правильно ли он был сохранен. Я не знаю, что именно вам нужно. – gruszczy
Эта ссылка не отвечает ему вообще. Он хочет повторно использовать валидацию в своей модели в админ. Не переопределить проверку в admin ... – Cerin