Pour l'un de mes clients, je génère une liste de clients depuis l'Admin Django. Il divise les clients par statut: actuel, acquis et passé.Question Django et SQL: Réduire le nombre d'accès à la base de données
Actuellement, le code de la vue de cette liste est la suivante:
def clients_list(request):
current_clients = Client.objects.all().filter(status='current')[:10]
acquired_clients = Client.objects.all().filter(status='acquired')[:10]
past_clients = Client.objects.all().filter(status='past')[:10]
return render_to_response('clients/list.html', {
'current_clients': current_clients,
'acquired_clients': acquired_clients,
'past_clients': past_clients
})
Maintenant, je sais que ce n'est pas idéal car il frappe trois fois la base de données quand je suis sûr qu'il ya une façon de le faire avec une seule requête. Est-il possible de refactoriser ce code pour qu'il ne frappe qu'une seule fois la base de données et utilise Python pour diviser le résultat en ces trois variables? Ou est-ce que je ne fais que trop insister sur une partie insignifiante de ma candidature?
Merci,
Matt
Est-ce lent? Sinon, allez-y et optimisez ailleurs. – ebo