Скачать список с категорией ManyToManyField

Мне нравится список загрузки со всеми файлами с категорией == "загрузка" во всех доступных категориях. (ManyToMany Field)

>>>from feincms.module.medialibrary.models import MediaFile, Category
>>>MediaFile.objects.filter(categories=1) #my download pk, these files I need
>>>Category.objects.all() # these categories I need

models.py: https://github.com/feincms/feincms/blob/master/feincms/module/medialibrary/models.py

это должно быть сочетание из:

{% for category in category %}
<h1>{{ category }}</h1>
    {% for file in category.mediafile_set.all %}
        <li> {{ file }} </li>
    {% endfor %}
 {% endfor %}

но не все файлы, только файлы с категорией (или, скажем, тегом) "скачать".

а также:

{% regroup file by categories.all as media_list %}
<ul>
{% for categories in media_list %}
    <li>{{ categories.grouper }}
    <ul>
        {% for file in categories.list %}
          <li>{{ file }}</li>
        {% endfor %}
    </ul>
    </li>
{% endfor %}
</ul>

эти файлы хороши, но категории не в правильном положении и формате.

Мне нужно дерево, как это:

Категория 1 # Категория Скачать, все файлы

  • файл 3
  • файл 1
  • файл 2

Категория 2

  • файл 3

Категория 3

  • | _ Подкатегория 3.1 (если дети, следующий вызов)
    • файл 2
  • файл 3

мои views.py это:

from feincms.module.medialibrary.models import MediaFile, Category

def medialistview(request):
    file = MediaFile.objects.filter(categories=1)
    category = Category.objects.all()   
    return render_to_response('media.html',{
        'file': file, 'category': category, 
    },context_instance=RequestContext(request))

Я новичок, может быть, это очень легко...

1 ответ

Решение

Вы можете использовать собственные ссылочные шаблоны, а затем просто передать categories переменная в качестве текущих дочерних элементов каждой категории, как вы перебираете..

Скажем так: category_tree.html

{% regroup file by categories.all as media_list %}
<ul>
{% for category in media_list %}
    <li>{{ category.grouper }}
    {% include "category_tree.html" with categories=category.children %}
    <ul>
        {% for file in category.list %}
          <li>{{ file }}</li>
        {% endfor %}
    </ul>
    </li>
{% endfor %}
</ul>
Другие вопросы по тегам