2013-08-05 6 views
0

Итак, я сохраняю CSV-документ для объекта Machine. Я хочу уведомить пользователя о том, что машина не существует, если она не существует и выходит из сохранения. Сначала я прочитал CSV-файл, чтобы узнать, на какой машине находится документ, прочитав строку с серийным номером.Пользовательское сообщение об ошибке from post_save signal

В моих сигналах:

@receiver(post_save, sender=CSVDocument) 
def read_file(sender,instance, signal, created, **kwargs): 
    ... 
    machine = Machine.objects.get(serial_number=sn) 
    if not machine: 
     customNotificationMessage in admin tempalte 

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

В настоящее время, если я достаю блок попытаться lookupt машины она вызывает исключение:

Machine matching query does not exist. Lookup parameters were {'serial_number': 'NEC03610154'} 

Я бы на самом деле просто хочу это execption как часть сообщений, после того, как файл будет сохранен.

+0

Просто измените 'get' на' filter' – catherine

ответ

0

Просто поймать это исключение и выводит сообщение из:

@receiver(post_save, sender=CSVDocument) 
def read_file(sender,instance, signal, created, **kwargs): 
    ... 
    try: 
     machine = Machine.objects.get(serial_number=sn) 
    exception Machine.DoesNotExist: 
     machine = None 
     error_message = 'Machine matching query does not exist' 
    if not machine: 
     customNotificationMessage in admin template 
     print error_message 

Другой вариант заключается в использовании filter() вместо get():

machine = Machine.objects.filter(serial_number=sn) 

вы получите пустой QuerySet, если нет совпадения.

Надеюсь, это поможет.