Vous pouvez créer une fonction générique pour cela.
def get_or_none(classmodel, **kwargs):
try:
return classmodel.objects.get(**kwargs)
except classmodel.DoesNotExist:
return None
Utilisez-le comme ci-dessous :
go = get_or_none(Content,name="baby")
go
sera None
si aucune entrée ne correspond, sinon l'entrée du contenu sera retournée.
Note : Cela soulèvera une exception MultipleObjectsReturned
si plus d'une entrée est retournée pour name="baby"
.
Vous devriez le gérer dans le modèle de données pour éviter ce type d'erreur, mais vous pouvez préférer l'enregistrer au moment de l'exécution comme ceci :
def get_or_none(classmodel, **kwargs):
try:
return classmodel.objects.get(**kwargs)
except classmodel.MultipleObjectsReturned as e:
print('ERR====>', e)
except classmodel.DoesNotExist:
return None