2017-10-18 6 views
1

J'ai une structure de page comme 'home_page > blog_index page > blog_page'. Et une page de blog peut avoir des sous-pages. Maintenant j'essaye de créer un menu d'archives de blog. Dites que j'ai une page de blog nommée «1» et qu'il y a des enfants «a», «b», «c». Et la page de blog nommé '2' et il a des enfants 'a', 'b', 'c'.Bergeronnette Django obtenant des enfants de la page avec des niveaux

Quand nous boucle BlogPages, nous avons huit pages comme '1', 'a', 'b', 'c', '2', 'a', 'b', 'c'.

Est-il possible que nous recevons des enfants avec des niveaux spécifiques? Par exemple si je veux seulement '1' et '2', que puis-je faire?

Merci

Répondre

2

Si vous connaissez la profondeur absolue des pages que vous voulez dans l'arborescence de page, vous pouvez écrire quelque chose comme: BlogPage.objects.filter(depth=4). Ici profondeur = 1 est le niveau racine; depth = 2 serait une page d'accueil du site créée au niveau racine; depth = 3 serait la page d'index du blog, et depth = 4 serait les pages du blog qui sont les enfants directs de l'index du blog. Cette approche n'est probablement pas très robuste - elle va se casser si vous réorganisez votre site pour que l'index du blog soit à un niveau différent - donc il vaudrait mieux dire "récupérer tous les BlogPages qui sont des enfants directs du BlogIndexPage "à la place. Vous pouvez le faire comme suit:

blog_index_page = BlogIndexPage.objects.first() 
blog_pages = BlogPage.objects.child_of(blog_index_page)