Jak wyświetlić pętle w pętli w pliku template?

0

Witam serdecznie. Chciałem wyświetlić pętle w pętli w pliku index.html. Ponieważ mam menu podzielone na kategorie, a każda kategoria jest podzielona na podkategorie następująco:

{% for kategoria in kategorie %}
    <div class="produkty-ele full-size">
      <div class="accordion">{{ kategoria.nazwa }}</div>
      <div class="panel">
          <ul>
              <li>podkategoria 1</li>
              <li>podkategoria 2</li>
              <li>podkategoria 3</li>
          </ul>
      </div>
    </div>
  {% endfor %}

podkategoria w models ma relacje do kategorii. Następująco:

class Podkategoria(models.Model):
    kategoria = models.ForeignKey(Kategoria,on_delete=models.CASCADE, blank=False, null=False)
    nazwa = models.CharField(max_length=100, blank=False)

Jak wyprintować wszystkie podkategorie do każdej kategorii. Jest w stanie ktoś pomóc?

1

Czym jest podkategoria w kategori? Jak manytomany to po prostu musisz zagnieździć pętlę. To samo tyczy się back referencingu.

0

w Kategorii nie mam zdefiniowanej relacji do Podkategorii

1
class Podkategoria(models.Model):
    kategoria = models.ForeignKey(Kategoria,on_delete=models.CASCADE, blank=False, null=False, related_name="podkategorie")
    nazwa = models.CharField(max_length=100, blank=False)



{% for kategoria in kategorie %}
    <div class="produkty-ele full-size">
      <div class="accordion">{{ kategoria.nazwa }}</div>
      <div class="panel">
          <ul>
              {% for podkategoria in kategoria.podkategorie %}
                <li>podkategoria</li>
              {% endfor %}
          </ul>
      </div>
    </div>
  {% endfor %}
0

w kategorii nie mam zdefiniowanej relacji do potkategorii. Nie wiem, może powinienem zdefiniować. Tylko w podkategorii mam relacje do kateogorii. To co mi wstawiłeś nie działa. Nic nie wyświetla. Tak wyglada moj models:


class Kategoria(models.Model):
    nazwa =  models.CharField(max_length=100, blank=False)
    def __str__(self):
        return self.nazwa

    class Meta:
        ordering = ['nazwa']
        verbose_name = u'Kategoria'

class Podkategoria(models.Model):
    kategoria = models.ForeignKey(Kategoria,on_delete=models.CASCADE, blank=False, null=False)
    nazwa = models.CharField(max_length=100, blank=False)

    def __str__(self):
        return  str(self.kategoria) + ' - ' + self.nazwa

    class Meta:
        ordering = ['nazwa']
        verbose_name = u'Podkategoria'

class Produkt(models.Model):
    podkategoria = models.ForeignKey(Podkategoria,on_delete=models.CASCADE, blank=False, null=False)
    kategoria = models.ForeignKey(Kategoria,on_delete=models.CASCADE, blank=True, null=True)
    nazwa = models.CharField(max_length=100, blank=False)
    cena = models.IntegerField(blank=False, null=False)
    opis = models.TextField(max_length=10000, blank=True, null=True)

1
{% for kategoria in kategorie %}
  <div class="produkty-ele full-size">
    <div class="accordion">{{ kategoria.nazwa }}</div>
    <div class="panel">
      <ul>
        {% for podkategoria in kategoria.podkategorie.all %}
          <li>{{ podkategoria.nazwa }}</li>
        {% endfor %}
      </ul>
    </div>
  </div>
{% endfor %}
0

To też nie działa. Nie moge sie odwolac w ten sposob.

2

@ledi12: dodał related_name, którego ty @hubertsuder nie dodałeś. Albo dodaj albo skorzystaj z wartości domyślnej kategoria.podkategoria_set.all

https://stackoverflow.com/questions/6306568/django-reverse-query-in-template

0

działa. Dziękuje

1 użytkowników online, w tym zalogowanych: 0, gości: 1