Django-fr

Forum

#1 21-04-2011 07:14:40

Epeios
Membre
Inscription : 21-04-2011
Messages : 1

Retirer élément d'un Queryset

Bonjour,

je ne parvient pas à enlver un élément d'un queryset.

je parcoure la liste par un FOR (je suis obligé car j'ai pas mal de choses à faire pour chaque élément) et dans certain cas, je veux retirer l'élément de la liste.

maqueryset2 = maqueryset
for p in maqueryset :
    XXXXXXXX
    if XXXX : maqueryset2 = maqueryset2.remove(p)
maqueryset = maqueryset2

évidemment cela ne fonctionne pas au niveau de remove (remove n'est pas connu de queryset.

quand je fait .exclude(p) il me dit que p n'est pas iteratif (?).


comment dois je donc faire pour que dans ma boucle située au dessus retirer l'élément p de cette queryset ?

merci.

Hors ligne

#2 06-05-2011 12:48:26

daker
Membre
Inscription : 29-03-2011
Messages : 13

Re : Retirer élément d'un Queryset

Voici un exemple

for p in maqueryset:
    if XXXX :
        p.delete()

Hors ligne

#3 09-05-2011 14:01:01

Bruno Bord
Membre
Inscription : 11-08-2010
Messages : 25

Re : Retirer élément d'un Queryset

> Voici un exemple
>

> for p in maqueryset:
>    if XXXX :
>        p.delete()
>

Y'a encore mieux :

MonModel.objects.filter(tralala).exclude(trululu).delete()

http://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.delete

Hors ligne

#4 09-05-2011 14:02:06

Bruno Bord
Membre
Inscription : 11-08-2010
Messages : 25

Re : Retirer élément d'un Queryset

... soupir... et là, je me rends compte que je réponds à côté de la plaque.

Désolé pour le bruit.

Hors ligne

#5 09-05-2011 14:22:11

David Larlet
Membre
Inscription : 11-08-2010
Messages : 102

Re : Retirer élément d'un Queryset

Le 21 avr. 2011 à 08:14, Epeios a écrit :

> Bonjour,
>
> je ne parvient pas à enlver un élément d'un queryset.
>
> je parcoure la liste par un FOR (je suis obligé car j'ai pas mal de
> choses à faire pour chaque élément) et dans certain cas, je veux retirer
> l'élément de la liste.
>
> maqueryset2 = maqueryset
> for p in maqueryset :
>    XXXXXXXX
>    if XXXX : maqueryset2 = maqueryset2.remove(p)
> maqueryset = maqueryset2
>
> évidemment cela ne fonctionne pas au niveau de remove (remove n'est pas
> connu de queryset.
>
> quand je fait .exclude(p) il me dit que p n'est pas iteratif (?).
>
>
> comment dois je donc faire pour que dans ma boucle située au dessus
> retirer l'élément p de cette queryset ?

Bonjour,

Le plus simple me semble être de traiter la queryset comme une liste :

maqueryset = list(maqueryset)
for i, item in enumerate(maqueryset):
  if xxx:
    maqueryset.pop(i)

Bonne journée,
David

Hors ligne

Pied de page des forums