Heim > Fragen und Antworten > Hauptteil
Wie im folgenden Code gezeigt, wird das Instanzobjekt basierend auf der Instanz-ID abgerufen. Wie wir alle wissen, tritt eine Ausnahme auf, wenn die ID beim Abrufen nicht vorhanden ist, der Filter jedoch nicht.
Also möchte ich alle fragen: Ist es in einer solchen Situation besser, get zu verwenden und die Ausnahme zu behandeln, oder ist es besser, Filter zu verwenden, um es besser zu machen? Welches ist standardisierter?
def get_city_image(self, instance):
if instance.city_id:
try:
city_image = City.objects.get(id=instance.city_id).image.url
# city_image = City.objects.filter(id=instance.city_id).last().image.url
except Exception, e:
city_image = None
else:
city_image = None
return city_image
淡淡烟草味2017-06-12 09:23:33
def get_city_image(self, instance):
try:
city_image = City.objects.get(id=instance.city_id).image.url
except City.DoesNotExist:
#捕获City不存在的异常, 抛出异常或是自己处理
city_image = None
return city_image
阿神2017-06-12 09:23:33
框架选择设计问题,django 是扔异常,别的框架直接返回None,看你喜欢那种,我不喜欢这种直接扔异常,直接补一个自己的方法就行了
参考链接: django 扩展/补丁 QuerySet