Категория рекурсии в Джанго - PullRequest
2 голосов
/ 30 мая 2011

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

Я пытаюсь создать шаблон для отображения:

Parent1

  • Category1
  • - booka
  • - bookb
  • Category2
  • - bookb
  • - bookc

Parent2

  • Category3
  • - bookb
  • - bookd

Мои модели:

class Category(models.Model):
        category = models.CharField(max_length=20)
        parent = TreeForeignKey('self', blank=True, null=True, related_name='children')
class Book(models.Model):
        bookname=models.CharField(_('bookname'), max_length=255)
        author=models.CharField(_('author'), max_length=255)
        manufacturer=models.CharField(_('manufacturer'), max_length=255)
        description=models.TextField(_('description'), blank=True)
        coverart = models.ImageField(upload_to="coverart", blank=True, null=True)
        adder=models.ForeignKey(User, related_name="added_models", verbose_name=_('adder'))
        added=models.DateTimeField(_('added'), default=datetime.now)
        category=models.ForeignKey(Category, related_name='cat')
        content=models.TextField(blank=True)

Есть какие-нибудь идеи о том, как сделать это в моих представлениях / шаблонах?Это просто базовая структура просмотра базы данных, но обратный поиск категорий / книг, принадлежащих родителю, сбивает меня с толку.

Ответы [ 2 ]

2 голосов
/ 30 мая 2011

попробуйте использовать django mptt , он поможет вам создать древовидную структуру в базе данных.Очень полезно

У него есть несколько шаблонов тегов, которые помогут создать HTML

2 голосов
/ 30 мая 2011
<ul>
{% for parent in categories %}
    <li>{{ parent.category }}
        <ul>
        {% for category in parent.children.all %}
        <li>{{ category.category }}
            <ul>
            {% for book in category.book_set.all %}
                <li>{{ book.bookname }}</li>
            {% endfor %}
            </ul>
        </li>
        {% endfor %}
        </ul>
    </li>
{% endfor %}
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...