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
框架选择设计问题,django 是扔异常,别的框架直接返回None,看你喜欢那种,我不喜欢这种直接扔异常,直接补一个自己的方法就行了
参考链接: django 扩展/补丁 QuerySet
用filter.first 效率是一样的,并且不会抛异常