2009-09-16 4 views
1

Disons que je le tableau suivant:Django QuerySet équivalent de SQL et entre

employé

name  start_date  end_date 
John  2009-10-10  2009-12-31 
Joe  2009-12-01  2010-05-10 

J'ai aussi un curr_date = '2009-11-01'. Si je veux obtenir tous les employés où curr_date devrait être entre un employé de start_date et end_date y compris, le SQL correspondant est:

SELECT * 
FROM employee 
WHERE curr_date between start_date and end_date 

Le correspondant Django QuerySet je suis venu avec est:

Employee.objects.filter(start_date__lte=curr_date, end_date__gte=curr_date) 

est-il un moyen alternatif de faire ce qui précède avec QuerySet de Django, la méthode __range ne fonctionne pas tout à fait pour le cas ci-dessus.

Répondre

1

Vous avez raison, la méthode __range ne fonctionnera pas, donc non, il n'y a aucun moyen d'utiliser l'ORM Django pour créer le SQL que vous recherchez.

Y a-t-il un problème avec l'utilisation de la méthode .filter qui vous a été proposée?

+0

Il n'y a rien de mal avec le filtre, je me demandais juste peut-être un moyen plus sec d'effectuer cette requête, je suppose que vous ne pouvez pas vraiment tout sec. –

Questions connexes