J'avais un débat là-dessus avec des collègues. Existe-t-il un moyen privilégié de récupérer un objet dans Django lorsque vous n'en attendez qu'un seul?Filtre Django versus obtenir un seul objet?
Les deux façons évidentes sont:
try:
obj = MyModel.objects.get(id=1)
except MyModel.DoesNotExist:
# we have no object! do something
pass
et
objs = MyModel.objects.filter(id=1)
if len(objs) == 1:
obj = objs[0]
else:
# we have no object! do something
pass
La première méthode semble plus correct behaviorally, mais utilise des exceptions dans le flux de contrôle qui peut introduire des frais généraux. Le second est plus rond mais ne déclenchera jamais une exception.
Avez-vous des idées sur lesquelles de ces méthodes est préférable? Lequel est le plus efficace?
Aucune expérience avec Django, mais toujours repérer. Être explicite, laconique et sûr par défaut, sont de bons principes, peu importe le langage ou le cadre. – nevelis