Django-fr

Forum

  • Accueil
  • » Django-fr
  • » [débutant] Queryset avec relation ManyToMany sur la même table

#1 12-08-2011 10:29:03

LiTiL_DiViL
Membre
Inscription : 06-05-2011
Messages : 7

[débutant] Queryset avec relation ManyToMany sur la même table

Bonjour,
J'essaye de trouver comment faire une queryset sur une relation qui pointe sur la même table.
J'ai un champ children sur une table de la forme :
children = models.ManyToManyField('self',symmetrical=False,related_name='Cclass_children',blank=True,null=True)

Je souhaite pouvoir faire une requete sui recupérera toutes les enfant d'un enregistrement de la table.

Je n'ai pas trouvé de doc sur ce cas d'utilisation.

Merci pour les infos

Hors ligne

#2 12-08-2011 10:48:59

Christophe, Jean-Charles Narbonne
Membre
Inscription : 23-06-2011
Messages : 30

Re : [débutant] Queryset avec relation ManyToMany sur la même table

Si tu dois gérer des arbres, les bases de données ne sont pas vraiment
faites pour et il est recommandé d'utiliser des bibliothèques:
http://django-mptt.github.com/django-mptt/

Si tu ne veux que les décendents directs (sans récursivité ni rien)
normalement, .children.all() devrai faire l'affaire...

remarque, je changerai:
related_name='Cclass_children' -> related_name='parents'

2011/8/12 LiTiL_DiViL <ldsteph _AT_ free.fr>

> Bonjour,
> J'essaye de trouver comment faire une queryset sur une relation qui pointe
> sur la même table.
> J'ai un champ children sur une table de la forme :
> children =
>
> models.ManyToManyField('self',symmetrical=False,related_name='Cclass_children',blank=True,null=True)
>
> Je souhaite pouvoir faire une requete sui recupérera toutes les enfant
> d'un enregistrement de la table.
>
> Je n'ai pas trouvé de doc sur ce cas d'utilisation.
>
> Merci pour les infos
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>

Hors ligne

#3 12-08-2011 10:52:39

SBillion
Membre
Lieu : grenoble
Inscription : 05-08-2011
Messages : 43
Site Web

Re : [débutant] Queryset avec relation ManyToMany sur la même table

Le 12/08/2011 11:29, LiTiL_DiViL a écrit :
> Bonjour,
> J'essaye de trouver comment faire une queryset sur une relation qui pointe
> sur la même table.
> J'ai un champ children sur une table de la forme :
> children =
> models.ManyToManyField('self',symmetrical=False,related_name='Cclass_children',blank=True,null=True)
>
> Je souhaite pouvoir faire une requete sui recupérera toutes les enfant
> d'un enregistrement de la table.
>
> Je n'ai pas trouvé de doc sur ce cas d'utilisation.
>
> Merci pour les infos
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
Bonjour,
Il me semble que tu veux simplement faire
TABLE.objects.get(id=1).children.all() par exemple ou encore
Table.objects.filter(title="blabla").children.all().

Je te dit ça de tête, mais je crois que c'est un truc dans le genre

Hors ligne

#4 12-08-2011 13:43:44

LiTiL_DiViL
Membre
Inscription : 06-05-2011
Messages : 7

Re : [débutant] Queryset avec relation ManyToMany sur la même table

Bonjour et merci pour vos réponses,
Malheureusement je n'y arrive pas j'ai un message d'erreur, j'ai créé un nouveau model de tests pour être sur mais cela ne fonctionne pas il doit y avoir quelque chose qui m'échappe :

Voila mon nouveau model

class Ctest (models.Model):
    ''' Modèle pour faire dest tests à effacer après usage.
    '''
   
    name = models.CharField(max_length=255)
    children = models.ManyToManyField('self',symmetrical=False,blank=True,null=True )
   
(j'ai créé un petit jeu de test)

Quand je lance dans mon shell un queryset :
qs = Ctest.objects.get(id=1).children.all()

j'ai cette erreur :

FieldError: Cannot resolve keyword 'ctest' into field. Choices are: children, id, name

j'ai essayé de modifié cela dans tout les sens mais en vain sad

Hors ligne

#5 12-08-2011 13:46:15

LiTiL_DiViL
Membre
Inscription : 06-05-2011
Messages : 7

Re : [débutant] Queryset avec relation ManyToMany sur la même table

Christophe, Jean-Charles Narbonne a écrit :

Si tu dois gérer des arbres, les bases de données ne sont pas vraiment
faites pour et il est recommandé d'utiliser des bibliothèques:
http://django-mptt.github.com/django-mptt/

Si tu ne veux que les décendents directs (sans récursivité ni rien)
normalement, .children.all() devrai faire l'affaire...

>

En fait je débute à peine en python et django pour le moment, c'est très expérimental ce que je fait pas vraiment besoin d'optimiser les perf(en tout cas pour le moment).

Merci

Hors ligne

  • Accueil
  • » Django-fr
  • » [débutant] Queryset avec relation ManyToMany sur la même table

Pied de page des forums