Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Django, Comment récupérer une classe liée à un ForeignKey à partir d'une instance ?

+3 votes

Je souhaites récupérer la classe liée à une foreignKey à partir d'une instance qui justement a été initialisée sans valeur.

Models.py

class monObjet(models.model):
        link = models.ForeignKey(monObjetLie)

class monObjetLie(models.model):
       nom = models.CharField(etc...)
       etc...

Instanciation de monObjet

objet = monObjet()

A partir de "objet" comment récupérer la classe à laquelle est liée link via la foreignKey ?

en faisant cela

lien = objet.__getattribute__('link')
print lien
>> None

J'espère avoir bien posé ma question.

demandé 11-Aou-2015 par torrak (172 points)
edité 11-Aou-2015 par max

2 Réponses

+1 vote
 
Meilleure réponse

Existe-il une autre méthode ?

Oui

(w) >>> from note.models import Order, Client
(w) >>> o = Order.objects.first()
(w) >>> o._meta.get_field('client').rel.to
<class 'note.models.Client'>
(w) >>> 

Est ce meilleur? J'en sais rien :)

répondu 11-Aou-2015 par Nsukami_ (1,998 points)
sélectionné 12-Aou-2015 par torrak

Attention cependant, tous les champs ne possèdent pas de membre "rel" et celui-ci peut être nul.

+2 votes

Je crois avoir trouvé une solution :
Si nous reprenons l'exemple précédent:

print objet.instance.__class__.__dict__['link'].field.related.parent_model
<class 'monObjetLie'>

Existe-il une autre méthode ?

répondu 11-Aou-2015 par torrak (172 points)
...