Update() avev les queryset django
Bonsoir,
J'ai regardé un peu dans la doc et apparemment update() ne s'utilise que lorsqu'on filtre en général ?
Si je comprends bien ça ne charge pas l'objet en mémoire et c'est un sacré gain de temps pour des modifications de masse ?
Merci d'avance
def default_address_view(request, pk):
user = request.user
user.adresses.filter(default=True).update(default=False)
# Définir la nouvelle adresse comme adresse par défaut
updated_rows = user.adresses.filter(pk=pk).update(default=True)
# Vérifier si l'adresse avec `pk=pk` a été mise à jour
if not updated_rows:
# Gérer l'erreur ici, par exemple en retournant une réponse d'erreur
return HttpResponse("Adresse non trouvée", status=404)
return redirect("accounts:profile")
Salut Gab !
Alors update permet de mettre à jour un queryset, donc ça peut contenir de 1 à N entrées. Ça dépend du nombre d'entrées dans ton queryset du coup mais c'est effectivement beaucoup plus efficace parce que ça va faire une seule requête SQL pour la mise à jour.
L'erreur serait de boucler sur un queryset pour mettre à jour les données une à une. Là ça peut prendre des mois (littéralement 😅) si tu as une base de données avec des milliards d'entrées.
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte