2013-08-05 83 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) 

如果沒有比賽,你會得到一個空的查詢集。

希望它有幫助。