1

好的,我将 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'}

实际上,我只想在保存文件后将此执行作为消息的一部分。

4

1 回答 1

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)

如果没有匹配,您将得到一个空的查询集。

希望能帮助到你。

于 2013-08-05T11:03:47.093 回答