好的,我将CSV文档保存到Machine对象。我想通知用户如果机器不存在则该机器不存在并退出保存。我首先通过读取序列号行来读取CSV文件以查看该文档的用途。
在我的信号中:
@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块来查看机器,它会引发异常:
Machine matching query does not exist. Lookup parameters were {'serial_number': 'NEC03610154'}
我实际上只是希望在保存文件后将此execption作为消息的一部分。
答案 0 :(得分: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)
如果没有匹配,您将获得一个空的查询集。
希望它有所帮助。