Скачать список с категорией 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>