Bonjour à tous , je débute avec django et j'essaie de créer des categories avec sous sous catégories j'ai essayé pas mal de chose , passé une journée dessu et je m'avoue vaincu , je pense qu'il me manque des connaissances pour arriver a faire ce que je veux . Par contre s'il vous plait ne me donné pas un package a installé je veux vraiment m'entrainer le but n'est pas juste que ça marche mais de voir comment ça peut marcher . Enfin bref donc voila ce que j'aimerai voir afficher sur mon site :
- Informatique
- PHP
- PYTHON
- Django Flask
- Graphisme
- Photographie
J'ai donc au début créer une simple catégorie et ensuite j'ai vue sur internet que l'on pouvait créer une clé etrangere directement dans le model categorie , j'ai tenté de créer avec un ForeignKey mais je crois qu'il faut un manytomany si je veux une infinie de souscategorie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class Category(models.Model): title = models.CharField(max_length=100) parent = models.ForeignKey('self', null=True, blank=True,on_delete=models.CASCADE) def __str__(self): return("%s" %(self.title))En soit pour l'ajout ou l'update ça marche je n'arrive juste pas à trouver comment je dois faire pour l'affichage . J'aimerai quelques choses comme j'ai mis en dessus , le souci c'est que même quand je reussi d'afficher il fait doublons .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class Category(models.Model): category_tag = models.CharField(max_length=50) parent = models.ManyToManyField('self', symmetrical=False, blank=True, related_name='categories') def __str__(self): return("%s" %(self.category_tag))
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <ul> {% for category in categories %} <ul> <li><a href=""> {{ category.title }}</a> {% if category.parent %} <ul> <li><a href="">{{ category.parent.title }}</a> </li> </li> </ul> {% endif %} </li> </ul> {% empty %} <li> Pas encore de categorie </li> {% endfor %} </ul>
Je me dis donc je dois faire une requete sql ou une fonction specifique , peut être dans la view ou le model . Je pense qu'il faut que je fasse un truc du genre si parent est null alors afficher les categories ou de joindre les deux colonnes mais j'arrive pas . J'ai aussi tenté ça mais ça marche pas
et ca
Code : Sélectionner tout - Visualiser dans une fenêtre à part top_level_cats = Category.objects.filter(parent__isnull=True)
Mais rien ne marche , j'ai essayé encore pas mal de choses et je m'arrache les cheveux . Comme je l'ai dit plus tôt je démarre dans django et il y'a encore pas mal de notion qui me manque mais si quelqu'un pouvait m'aider ça me sauverait la vie
Code : Sélectionner tout - Visualiser dans une fenêtre à part subcategories = Category.objects.filter(parent__id=category.id)![]()
Partager