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

Fermé
impactus_gm - Modifié le 17 juil. 2019 à 13:50
mamiemando Messages postés 33357 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 novembre 2024 - 17 juil. 2019 à 14:01
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 :-)
A voir également:

1 réponse

mamiemando Messages postés 33357 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 novembre 2024 7 799
Modifié le 17 juil. 2019 à 14:01
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