Bienvenue sur IndexError.

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

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

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 (168 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,994 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 (168 points)
...