Maison > Questions et réponses > le corps du texte
Comme le montre le code suivant, l'objet instance sera obtenu en fonction de l'ID de l'instance. Comme nous le savons tous, si l'ID n'existe pas lors de l'obtention, une exception se produira, mais pas le filtre.
Donc, je voudrais demander à tout le monde, dans une situation comme celle-ci, est-il préférable d'utiliser get et de gérer l'exception, ou est-il préférable d'utiliser un filtre pour mieux le faire ? Lequel est le plus standardisé ?
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
Problèmes de sélection et de conception du framework, Django lève des exceptions, les autres frameworks renvoient directement Aucun, cela dépend de celui que vous aimez, je n'aime pas lancer des exceptions directement, inventez simplement votre propre méthode
Lien de référence : extension/patch Django QuerySet
PHP中文网2017-06-12 09:23:33
L'efficacité de l'utilisation de filter.first est la même et aucune exception ne sera levée