try ... except ...如果找不到记录则返回异常

时间:2015-05-17 11:26:51

标签: python django

class Model1(models.Model):

    def method1(self):
        try:
            x = self.someotherclass_set.get(....)
        except self.DoesNotExist:
            return None 

        return x

然后是过滤器:

@register.filter
def filter1(arg1):
    x = var1. method1()
    if x:
        return x.value
    else:
        return 'Nothing'

观点:

some data: {{ item|filter1 }}

然而黄色屏幕和错误DoesNotExist正在抛出。我怎么能摆脱它?我只想展示"没什么"如果没有记录。

1 个答案:

答案 0 :(得分:0)

使用first()方法代替try / except块:

def method1(self):
    return self.someotherclass_set.filter(....).first()

顺便说一句,你也可以简化模板过滤器:

@register.filter
def filter1(arg1):
    x = arg1.method1()
    return x.value if x else 'Nothing'

更新:如果您确实想要使用例外,请将例外更改为有效例:

except Model1.DoesNotExist: