Domanda

Sono una categoria di lavoro e sottocategorie con DataModel , va tutto bene in questa parte, ma ho bisogno di usare la mia categoria e le mie sottocategorie nel mio menu Nav, sto provando a usare questo Menu Jquery e sto eseguendo il rendering del mio menu con le sottocategorie, ma sono perso con il rendering delle sottocategorie nel modo:

<ul>
  <li>
    <a href="#">Category</a>

    <!--subcategories-->
   <span>Subcategory 1 </span>
   <span>Subcategory 2 </span>
   ...
  </li>
  ....
  ....
 </ul>

Il mio problema: nel modello di dati: con il 'sé', non so quanto male fare in questo caso per rendere le sottocategorie (il genitore è il campo stesso) ..

class Category(models.Model):
 name = models.CharField(core=True, maxlength=200)
 slug = models.SlugField(prepopulate_from=('name',))
 parent = models.ForeignKey('self', blank=True, null=True, related_name='child')
 description = models.TextField(blank=True,help_text="Optional")

Grazie

È stato utile?

Soluzione

Ottieni tutte le categorie di livello superiore usando qualcosa come

top_level_cats = Category.objects.filter(parent__isnull=True)

Quindi:

for tlc in top_level_cats:
    #do the HTML for the top-level category
    for clc in tlc.child.all():
        #do the HTML for the children of clc

Se hai categorie a più livelli, ci sarà bisogno di una chiamata ricorsiva lì dentro da qualche parte, ma questo fornisce l'essenza di base.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top