Django-fr

Forum

#1 07-04-2010 14:42:25

antoine@inaps.org
Membre
Inscription : 11-08-2010
Messages : 3

Héritage de modèles

Bonjour,

Je cale depuis 2h avec un problème Django. La situation : j'ai une app qui
possède plusieurs modèles assez différents, et je dois créer un système qui
permet d'ajouter un commentaire attaché aux instances de ces modèles. La
solution naïve serait de créer un modèle de commentaire par modèle à
commenter, mais c'est un peu lourd, et pas très propre amha.

Donc j'ai fais un modèle intermédiaire appelé "Commentable", et les
modèles devant "gérer" les commentaires héritent de celui-ci. Ensuite un
commentaire n'a plus qu'à posséder une clé étrangère vers une instance du
modèle Commentable, et l'ORM Django fait le reste. Cette solution
fonctionne vachement bien, sauf que, quand j'ai un objet commentaire, et
que je veux récupérer l'objet commenté, c'est le drame.

En fait, je peux récupérer mon objet intermédiaire Commentable, et
celui-ci possède bien des attributs pour récupérer ensuite l'objet
"concret" associé (un par classe héritant de Commentable), le problème
c'est que je ne sais pas quel attribut employer puisque je ne sais pas à
quel modèle appartient mon objet.

J'ai bien pensé à plusieurs solution, comme gérer une liste des classes
héritant de Commentable (manuellement, ou en bidouillant avec les
metaclasses) mais je trouve ça plutôt crade, et je suis surement passé à
coté d'une solution plus propre...

Des idées ?

Merci d'avance,
Antoine.

Hors ligne

#2 07-04-2010 15:09:03

antoine@inaps.org
Membre
Inscription : 11-08-2010
Messages : 3

Re : Héritage de modèles

Effectivement je suis passé à coté d'un truc là smile.

Merci à toi !

On Wed, 7 Apr 2010 16:27:41 +0200, laureline.guerin _AT_ crocobox.org wrote:
>>
>> Bonjour,
>>
>> Je cale depuis 2h avec un problème Django. La situation : j'ai une app
>> qui
>> possède plusieurs modèles assez différents, et je dois créer un système
>> qui
>> permet d'ajouter un commentaire attaché aux instances de ces modèles.
La
>> solution naïve serait de créer un modèle de commentaire par modèle à
>> commenter, mais c'est un peu lourd, et pas très propre amha.
>>
>> Donc j'ai fais un modèle intermédiaire appelé "Commentable", et les
>> modèles devant "gérer" les commentaires héritent de celui-ci. Ensuite
un
>> commentaire n'a plus qu'à posséder une clé étrangère vers une instance
>> du
>> modèle Commentable, et l'ORM Django fait le reste. Cette solution
>> fonctionne vachement bien, sauf que, quand j'ai un objet commentaire,
et
>> que je veux récupérer l'objet commenté, c'est le drame.
>>
>> En fait, je peux récupérer mon objet intermédiaire Commentable, et
>> celui-ci possède bien des attributs pour récupérer ensuite l'objet
>> "concret" associé (un par classe héritant de Commentable), le problème
>> c'est que je ne sais pas quel attribut employer puisque je ne sais pas
à
>> quel modèle appartient mon objet.
>>
>> J'ai bien pensé à plusieurs solution, comme gérer une liste des classes
>> héritant de Commentable (manuellement, ou en bidouillant avec les
>> metaclasses) mais je trouve ça plutôt crade, et je suis surement passé
à
>> coté d'une solution plus propre...
>>
>> Des idées ?
>>
>> Merci d'avance,
>> Antoine.
>> _______________________________________________
>> django mailing list
>> django _AT_ lists.afpy.org
>> http://lists.afpy.org/mailman/listinfo/django
>>
>
> Salut,
>
> Y'a ça: http://docs.djangoproject.com/en/dev/ref/contrib/comments/
> Et le principe c'est ça:
> http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/
>
> --
> Lauréline.
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django

Hors ligne

#3 07-04-2010 15:27:41

Zebuline
Membre
Lieu : Toulouse
Inscription : 11-08-2010
Messages : 3
Site Web

Re : Héritage de modèles

>
> Bonjour,
>
> Je cale depuis 2h avec un problème Django. La situation : j'ai une app qui
> possède plusieurs modèles assez différents, et je dois créer un système
> qui
> permet d'ajouter un commentaire attaché aux instances de ces modèles. La
> solution naïve serait de créer un modèle de commentaire par modèle à
> commenter, mais c'est un peu lourd, et pas très propre amha.
>
> Donc j'ai fais un modèle intermédiaire appelé "Commentable", et les
> modèles devant "gérer" les commentaires héritent de celui-ci. Ensuite un
> commentaire n'a plus qu'à posséder une clé étrangère vers une instance du
> modèle Commentable, et l'ORM Django fait le reste. Cette solution
> fonctionne vachement bien, sauf que, quand j'ai un objet commentaire, et
> que je veux récupérer l'objet commenté, c'est le drame.
>
> En fait, je peux récupérer mon objet intermédiaire Commentable, et
> celui-ci possède bien des attributs pour récupérer ensuite l'objet
> "concret" associé (un par classe héritant de Commentable), le problème
> c'est que je ne sais pas quel attribut employer puisque je ne sais pas à
> quel modèle appartient mon objet.
>
> J'ai bien pensé à plusieurs solution, comme gérer une liste des classes
> héritant de Commentable (manuellement, ou en bidouillant avec les
> metaclasses) mais je trouve ça plutôt crade, et je suis surement passé à
> coté d'une solution plus propre...
>
> Des idées ?
>
> Merci d'avance,
> Antoine.
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>

Salut,

Y'a ça: http://docs.djangoproject.com/en/dev/ref/contrib/comments/
Et le principe c'est ça:
http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/

--
Lauréline.

Hors ligne

#4 07-04-2010 23:15:16

Samuel Martin
Membre
Inscription : 11-08-2010
Messages : 30

Re : Héritage de modèles

Sinon il est possible depuis ta classe "Comment" de créer une méthode
capable de lister les classes liées et de renvoyer seulement l'objet lié
avec le commentaire courant. Non ?

As tu trouvé une solution ?

2010/4/7 <antoine _AT_ inaps.org>

>
> Effectivement je suis passé à coté d'un truc là smile.
>
> Merci à toi !
>
> On Wed, 7 Apr 2010 16:27:41 +0200, laureline.guerin _AT_ crocobox.org wrote:
> >>
> >> Bonjour,
> >>
> >> Je cale depuis 2h avec un problème Django. La situation : j'ai une app
> >> qui
> >> possède plusieurs modèles assez différents, et je dois créer un système
> >> qui
> >> permet d'ajouter un commentaire attaché aux instances de ces modèles.
> La
> >> solution naïve serait de créer un modèle de commentaire par modèle à
> >> commenter, mais c'est un peu lourd, et pas très propre amha.
> >>
> >> Donc j'ai fais un modèle intermédiaire appelé "Commentable", et les
> >> modèles devant "gérer" les commentaires héritent de celui-ci. Ensuite
> un
> >> commentaire n'a plus qu'à posséder une clé étrangère vers une instance
> >> du
> >> modèle Commentable, et l'ORM Django fait le reste. Cette solution
> >> fonctionne vachement bien, sauf que, quand j'ai un objet commentaire,
> et
> >> que je veux récupérer l'objet commenté, c'est le drame.
> >>
> >> En fait, je peux récupérer mon objet intermédiaire Commentable, et
> >> celui-ci possède bien des attributs pour récupérer ensuite l'objet
> >> "concret" associé (un par classe héritant de Commentable), le problème
> >> c'est que je ne sais pas quel attribut employer puisque je ne sais pas
> à
> >> quel modèle appartient mon objet.
> >>
> >> J'ai bien pensé à plusieurs solution, comme gérer une liste des classes
> >> héritant de Commentable (manuellement, ou en bidouillant avec les
> >> metaclasses) mais je trouve ça plutôt crade, et je suis surement passé
> à
> >> coté d'une solution plus propre...
> >>
> >> Des idées ?
> >>
> >> Merci d'avance,
> >> Antoine.
> >> _______________________________________________
> >> django mailing list
> >> django _AT_ lists.afpy.org
> >> http://lists.afpy.org/mailman/listinfo/django
> >>
> >
> > Salut,
> >
> > Y'a ça: http://docs.djangoproject.com/en/dev/ref/contrib/comments/
> > Et le principe c'est ça:
> > http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/
> >
> > --
> > Lauréline.
> >
> >
> > _______________________________________________
> > django mailing list
> > django _AT_ lists.afpy.org
> > http://lists.afpy.org/mailman/listinfo/django
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>

Hors ligne

#5 08-04-2010 08:57:17

antoine@inaps.org
Membre
Inscription : 11-08-2010
Messages : 3

Re : Héritage de modèles

Le Thu, 8 Apr 2010 00:15:16 +0200,
Samuel Martin <martin.sam _AT_ gmail.com> a écrit :

> Sinon il est possible depuis ta classe "Comment" de créer une méthode
> capable de lister les classes liées et de renvoyer seulement l'objet
> lié avec le commentaire courant. Non ?
>
> As tu trouvé une solution ?
>

C'est ce dont je parlais quand j'ai dit que je pensais à tenir une
liste des classes "Commentable" dans mon premier message, mais je ne
trouve pas ça très propre...

La solution proposée par Lauréline, c'est à dire l'app ContentType
répond parfaitement au problème, elle permet de gérer des clés
étrangères génériques dans les modèles, et elle s'occupe toute seule du
reste.

Tu as un problème similaire ?


> 2010/4/7 <antoine _AT_ inaps.org>
>
> >
> > Effectivement je suis passé à coté d'un truc là smile.
> >
> > Merci à toi !
> >
> > On Wed, 7 Apr 2010 16:27:41 +0200, laureline.guerin _AT_ crocobox.org
> > wrote:
> > >>
> > >> Bonjour,
> > >>
> > >> Je cale depuis 2h avec un problème Django. La situation : j'ai
> > >> une app qui
> > >> possède plusieurs modèles assez différents, et je dois créer un
> > >> système qui
> > >> permet d'ajouter un commentaire attaché aux instances de ces
> > >> modèles.
> > La
> > >> solution naïve serait de créer un modèle de commentaire par
> > >> modèle à commenter, mais c'est un peu lourd, et pas très propre
> > >> amha.
> > >>
> > >> Donc j'ai fais un modèle intermédiaire appelé "Commentable", et
> > >> les modèles devant "gérer" les commentaires héritent de
> > >> celui-ci. Ensuite
> > un
> > >> commentaire n'a plus qu'à posséder une clé étrangère vers une
> > >> instance du
> > >> modèle Commentable, et l'ORM Django fait le reste. Cette solution
> > >> fonctionne vachement bien, sauf que, quand j'ai un objet
> > >> commentaire,
> > et
> > >> que je veux récupérer l'objet commenté, c'est le drame.
> > >>
> > >> En fait, je peux récupérer mon objet intermédiaire Commentable,
> > >> et celui-ci possède bien des attributs pour récupérer ensuite
> > >> l'objet "concret" associé (un par classe héritant de
> > >> Commentable), le problème c'est que je ne sais pas quel attribut
> > >> employer puisque je ne sais pas
> > à
> > >> quel modèle appartient mon objet.
> > >>
> > >> J'ai bien pensé à plusieurs solution, comme gérer une liste des
> > >> classes héritant de Commentable (manuellement, ou en bidouillant
> > >> avec les metaclasses) mais je trouve ça plutôt crade, et je suis
> > >> surement passé
> > à
> > >> coté d'une solution plus propre...
> > >>
> > >> Des idées ?
> > >>
> > >> Merci d'avance,
> > >> Antoine.
> > >> _______________________________________________
> > >> django mailing list
> > >> django _AT_ lists.afpy.org
> > >> http://lists.afpy.org/mailman/listinfo/django
> > >>
> > >
> > > Salut,
> > >
> > > Y'a ça: http://docs.djangoproject.com/en/dev/ref/contrib/comments/
> > > Et le principe c'est ça:
> > > http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/
> > >
> > > --
> > > Lauréline.
> > >
> > >
> > > _______________________________________________
> > > django mailing list
> > > django _AT_ lists.afpy.org
> > > http://lists.afpy.org/mailman/listinfo/django
> > _______________________________________________
> > django mailing list
> > django _AT_ lists.afpy.org
> > http://lists.afpy.org/mailman/listinfo/django
> >

Hors ligne

Pied de page des forums