Récupérer le contenu d'une variable en python et l'utiliser

impactus_gm -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je débute dans le développement avec Python et
django
et je butte sur un problème.

Je voudrais récupérer le contenu d'un variable et l'utiliser, mais disons sans faire référence à la variable. Je sais que ça parait un peu superflu je vais illustrer

En somme, j'ai une variable :
maVar = etat


et je voudrais utiliser son contenu, donc état ici ==>
demandes = Demande.objects.filter(etat = none)


Puisque si j'utilise
maVar
, cela créera une erreur vu que
maVar
n'est pas une propriété de
Demande
.

je voulais utiliser
.getattr()
mais il prend en paramètre deux valeurs.

Que faire?

Merci beaucoup de m'aider :-)

1 réponse

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    Bonjour,

    Je pas compris ta question. Dans ton exemple la variable
    demandes
    .

    Voyons si tu as bien compris ce que signifie
    demandes = Demande.objects.filter(etat = None) 
    . Ici tu as un classe
    Demande
    qui possède un attribut statique (
    .objects
    ). Cet attribut est d'un certain type, et ce type possède une méthode
    filter
    . Ici tel que tu l'as écrit, cette méthode ne possède aucun paramètre obligatoire, et un paramètre optionnel nomm" "etat" que tu as spécifié comme étant égal à
    None
    (avec un N majuscule, en python).

    Le nom
    etat
    coïncide soit avec le nom d'un des paramètres déclarés dans la méthode
    filter()
    , soit cette méthode utilise des listes de paramètres abstraites (voir en python
    *args
    et
    **kwargs
    ). Si on regarde dans la documentation django, on est apparamment dans ce second cas.

    J'en déduis donc que dans ton code
    Demande.objects
    correspond à un
    QuerySet
    qui contient une série d'objets python qui possèdent un attribut
    etat
    par exemple :

    class MonType:
      def __init__(self):
        self.etat = 7
    
    x = MonType()
    print(x.etat) # Affiche 7
    print(getattr(x, "etat")) # Affiche 7 aussi


    Donc première question, est-ce bien le cas ? Une manière de voir serait de regarder le type des objets que tu as dans ton
    QuerySet
    et t'assurer que ce type possède bien un attribut appelé
    etat
    .

    Ensuite
    0