是否有更优雅的方式来写这个?
try:
author = Author.objects.get \
(internal_id=line[5])
except:
author = Author.objects.get \
(internal_id=author_mapper[line[5]])
Run Code Online (Sandbox Code Playgroud)
或者这是最好的吗?
author_id = line[5]
try:
author = Author.objects.get(internal_id=author_id)
except Author.DoesNotExist: #blank excepts are bad and hide errors.
author_id = author_mapper[line[5]]
author = Author.objects.get(internal_id=author_id)
Run Code Online (Sandbox Code Playgroud)
你的版本对爵士乐来说已经足够了.但是,您应该添加一个显式异常来捕获,因为空白except语句可能相当危险.想象一下使用internal_id=line[5]加注的情况Author.MultipleItemsReturned.你肯定希望这个提升,和/或单独处理它,因为它是一个可能被隐藏的非常不同的问题.好吧,在这种情况下,它可能不会,但只是一般来说,空白excepts不好:)