Как вернуть сообщение об ошибке из модели? - PullRequest
1 голос
/ 02 марта 2012

В дополнение к этому вопросу , если в модели должна присутствовать бизнес-логика, как вернуть сообщение об ошибке из модели?

def save(self, *args, **kwargs):
    if <some condition>:
        #return some error message to the view or template

Ответы [ 2 ]

4 голосов
/ 02 марта 2012

Pastylegs является правильным, но вы не должны делать такую ​​логику в методе save. Django имеет встроенную систему для проверки экземпляров модели перед сохранением - вы должны использовать это и поднять ValidationError при необходимости.

1 голос
/ 02 марта 2012

Возбуждение исключения - это способ сообщить об ошибке логики программы (ошибка в «бизнес-логике»), о чем вы говорите. Вы можете просто создать исключение, как предлагает pastylegs (имейте в виду, что SomeException является просто заполнителем):

from django.core.exceptions import SomeException

def save(self, *args, **kwargs):
    if <some condition>:
        raise SomeException('your message here')

Вы можете найти доступные исключения fpr django здесь: https://docs.djangoproject.com/en/1.3/ref/exceptions/, плюс вы также можете использовать стандартные исключения Python, для которых вы можете найти документацию здесь: http://docs.python.org/library/exceptions.html

Я бы порекомендовал вам найти Исключение, описывающее вашу проблему, или вы будете очень смущены, если эта ошибка появится через несколько недель, когда вы не сможете вспомнить, что именно вы делали сейчас.

...