1

Тема: Запара з отриманням мульті дропдавну з допомогою Django.

Коротше  є модель , і потрібно зробити трирівневий дропдавн. Двох рівневий підказали , але так і не в’їхав як він працює, а саме цикли виведення.
Ось двох рівневий. Який працює справно. Але коли намагаюсь вдосконалити і зроби трьох рівневий ,мало що вихоить. Те що получилось в самому кінці з скріншотами.

def some_view(request): 
     foo = []
     for name_part in NamePart.objects.all(): 
          foo.append({
             'name_part': name_part,
             'rozdils': Rozdil.objects.filter(part_of=name_part.pk) 
     })
     return render(request, 'template_show_all.html', {'foo': foo})


# template_show_all.html
{% for buzz in foo %}
<h1>{{ buzz. name_part.title}}
  {% for bar in buzz.rozdils %}
      <h2>{{ bar.title }}
  {% endfor %}
{% endfor %}

Модель.

class NamePart(models.Model):
    title = models.CharField(max_length=255,verbose_name=" .")

    def __unicode__(self):
        return '%s' % (self.title)

class Rozdil(models.Model):

    title = models.CharField(max_length=255,verbose_name="Налу")
    part_of = models.ForeignKey(NamePart,verbose_name="н")
    is_main = models.BooleanField(default=1,verbose_name="Гоний ?")

    def get_absolute_url(self):
        return reverse('rozdil', self.id)

    def __unicode__(self):
        return '%s' % (self.title)

class Stats(models.Model):
    name = models.CharField(max_length=170,verbose_name="я ?")
    image = models.ImageField(upload_to='media')
    robota =  RichTextField(verbose_name="Опти")
    opus_ustanovku = RichTextField(verbose_name="Опановки")
    zag_bund = RichTextField(verbose_name="Забудова")
    tth = RichTextField(verbose_name="ТТХ")
    teh_obslug = RichTextField(verbose_name="Технне ")
    main_is = models.ForeignKey(Rozdil,verbose_name="З ")

    def get_absolute_url(self):
        return reverse('details', self.id)

    def __unicode__(self):
        return '%s %s' % (self.name, self.main_is)

Те що получилось у мене.
HTML розмітка.

{% for buzz in lal %}
        <div class="dropdown">

            <a id="dLabel" role="button" data-toggle="dropdown" class="btn btn-default" data-target="#" href="">
              {{ buzz.name_part.title}} <span class="caret"></span>
            </a>

            <ul class="dropdown-menu multi-level" role="menu" aria-labelledby="dropdownMenu">
              <li class="dropdown-submenu">
                {% for bar in buzz.rozdils %}
                <a tabindex="-1" href="#">{{ bar.title }}</a>
                <ul class="dropdown-menu">

                  {%for det in buzz.details%}
                  <li><a href="#">{{det.name}}</a></li>
                  {% endfor%}
                </ul>
                {% endfor%}
              </li>
            </ul>

        </div>
        {% endfor%}

Вьюха

def detali(request,id_ekz):
    foo = []
    for name_part in NamePart.objects.all():
        foo.append({'name_part': name_part,'rozdils': Rozdil.objects.filter(part_of=name_part.pk)})



    Lal = []
    for name_part in NamePart.objects.all():
        for details in Rozdil.objects.filter(part_of=name_part.pk):
            Lal.append({'name_part': name_part,'rozdils': Rozdil.objects.filter(part_of=name_part.pk),'details':Stats.objects.filter(main_is=details.pk)})


    details = Stats.objects.get(pk=id_ekz)
    rozdil = Rozdil.objects.all()
    context = {'details':details,'rozdil': rozdil,'foo': foo,'lal':Lal}

    return render(request,'details.html',context)

Тому замість того щоб створити одину кнопку як назву частини, що в середині містить 7 розділів (в випакду тзсп), а від кожного розділу має вибігати стрічка з усім що є в цьому розділі.
То я отримую ось таке 7 назв ТЗСП в котрому по 7 розділів але одна кнопка вибиває дропдавн , в якому все ті ж 7 пунктів але відображають список для перешого розділу, друга по списку кнопка відображає до друго і т.д
ДУмаю по скріншотах швидше зрозумієте.

Ну і скріншоти.

Post's attachments

Screenshot from 2015-05-24 11:10:03.png 44.68 kb, 283 downloads since 2015-05-24 

Screenshot from 2015-05-24 11:17:31.png 43.29 kb, 280 downloads since 2015-05-24 

2

Re: Запара з отриманням мульті дропдавну з допомогою Django.

І так , проблема на скільки я розумію в самій верстці і цими Б**скими циклами.