structure de l'arbre de la relation parent-enfant dans les modèles django
comment puis-je mettre en œuvre la structure de l'arbre dans les modèles django avec l'aide de django-mptt.
j'ai le modèle.
class Person(TimeStampedModel):
name = models.CharField(max_length=32)
parent = models.ForeignKey('self', null=True, blank=True, related_name='children')
maintenant je veux ..
Parent
Child 1
subchild 1.1
subchild 1.2
nextsubchild 1.2.1
Child 2
Child 3
il y a des noms doit être capable de cliquer pour afficher son profil.
OriginalL'auteur Ahsan | 2011-03-08
Vous devez vous connecter pour publier un commentaire.
de Django boucle while question et
http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#inclusion-tags
lemme prendre un coup d'oeil
je pense que l'inclure dans la boucle pour créer de problème, sinon le code est bon.
Désolé je ne me souviens pas du haut de ma tête comment je suis arrivé autour de la boucle de récursivité. Je vais essayer de revenir et de modifier cette réponse dès que je le retrouve dans mon code dans la matinée. Désolé Ahsan. Cette question stackoverflow.com/questions/2408854/django-while-loop on dirait qu'il peut être d'intérêt pour vous. Ils utilisent l'inclusion de la balise qui comprend lui-même.
Ne devrait pas "children_list" être "children_tag" dans le children.html?
OriginalL'auteur DTing
Je viens de terminer la mise en œuvre de cette. Je voulais une structure d'arbre pour un sous-navigation, mais je n'ai pas envie de faire quelque chose d'étrange avec récursive modèles.
La solution que j'ai mis en place est très simple: j'ai tout simplement une boucle dans la vue (dans mon cas, un générique de la fonction d'assistance) et aplatissez la structure hiérarchique en une simple liste. Alors, dans mon template je viens d'utiliser une boucle for pour parcourir la liste.
Chaque élément de la liste peut être l'une des trois choses: "dans", l'objet, ou "out". Dans mon cas, je suis de la construction d'une série de ul li éléments de la vue, de sorte que lorsque j'en rencontre "dans" j'ai créer un nouveau ul, quand je rencontre des "out" je ferme les ul. Sinon, je le rendu de l'élément.
Mon modèle de code ressemble à ceci:
Le code dans la fonction d'assistance ressemble à ceci:
L'utilisation de ces extraits, vous devriez être capable de construire n'importe quelle sorte d'arbre hiérarchique vous le souhaitez, sans faire la récursivité dans le modèle, et le fait de garder la logique de la vue.
Je sais qu'il y avait déjà accepté de répondre à cela, mais je pensais que je poste la technique dans le cas où il aide à quelqu'un d'autre.
Je ne comprends pas pourquoi cela n'a pas eu plus de points, la meilleure réponse jusqu'à maintenant !!! Mec, très bon travail, beaucoup mieux que d'utiliser les balises de modèle et c'est la seule MVC solution que j'ai traversé jusqu'à présent et fonctionne très bien et rapide, très bon TRAVAIL !!!
J'aime vraiment cette. Malheureusement, ma structure de l'arbre est affiché dans les tableaux, donc j'ai besoin de quelque chose comme
<div style="margin-left: %d * level">...
. J'ai donc abandonné'in'
et'out'
entrées et attributs ajoutés aides avec les css des trucs à des objets lui-même.OriginalL'auteur Clayton Gulick
Ce sont d'excellentes réponses, mais je consolidé un peu et le mettre sur le modèle actuel.
Et puis dans votre modèle:
Aimeriez-vous expliquer votre code @sheats?
OriginalL'auteur sheats
C'est très simple
Tout ce que vous avez à faire dans votre point de vue est d'obtenir tous les objets:
Puis dans votre modèle :
OriginalL'auteur Armance