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
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
L'efficacité de l'utilisation de filter.first est la même et aucune exception ne sera levée