2013-08-05 61 views
0

好,所以我将一个CSV文档保存到一个机器对象。我想通知用户,如果机器不存在并退出保存,机器不存在。我首先读取CSV文件,通过读取序列号行来查看文档所用的机器。来自post_save信号的自定义错误信息

在我的信号:

@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 

我不想在这个阶段产生一个异常,而是告诉用户没有这样的机器,所以首先创建机器。

目前,如果我拿出try块来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) 

如果没有比赛,你会得到一个空的查询集。

希望它有帮助。