2017-07-25 2 views
0

J'ai une requête TranslationStep.objects.filter(step_id=pk). J'ai besoin de vérifier si l'objet existe ou non et si oui, retourner l'objet (ou plusieurs objets). J'ai lu que .exists() est le moyen le plus rapide de le faire, mais je devrais faire 2 demandes.Accélérer django .exists()

if TranslationStep.objects.filter(step_id=pk).exists(): 
return TranslationStep.objects.filter(step_id=pk) 
else: 
return None 

Comment puis-je l'optimiser?

+1

Pourquoi ne pas simplement renvoyer TranslationStep.objects.filter (step_id = pk), et oublier le contrôle? Maintenant, l'appelant de votre fonction doit faire un contrôle pour voir s'ils ont un jeu de requête ou Aucun en retour. – RemcoGerlich

+0

Django try/except [get-object-or-404] (https://docs.djangoproject.com/fr/1.11/topics/http/shortcuts/#get-object-or-404) –

Répondre

4

Vous ne devriez pas faire cela du tout. filter() retournera un jeu de requête vide s'il n'y a pas de correspondance, ce qui est faux dans un contexte booléen.