Результаты группового запроса в шаблоне Django - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь сгруппировать некоторые результаты запроса в шаблон Django.Я попытался перегруппировать безуспешно.

У меня есть модель тегов, у которой есть родительский тег, как показано ниже, и он связан с моей моделью Board, которая также представлена ​​ниже:

class BoardTags(models.Model):
    name = models.CharField(max_length=150, null=True)
    description = models.TextField(default='', null=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    parent_tag = models.ForeignKey('self', null=True, blank=True)

    def __str__(self):
        return self.name

class Board(models.Model):
    title = models.CharField(max_length=100, unique=False, blank=False, verbose_name=('Board_Title'))
    sub_title = models.CharField(max_length=100, blank=False)
    board_description = models.TextField(max_length=300, blank=False)
    tags = models.ManyToManyField(BoardTags, blank=True, related_name='board')

Это представление, которое я использую для созданиядоска (это где теги доски должны отображаться):

class CreateBoard(LoginRequiredMixin, SelectRelatedMixin, generic.CreateView):
    model = models.Board
    template_name = 'board/board_form.html'
    select_related = ("user")
    form_class = BoardForm

Я использую этот виджет 'tags': forms.CheckboxSelectMultiple (), чтобы попытаться получить этот результат: Screenshot of intended output

Родительским тегом будут «Темы», и внутри вкладки навигации мне бы хотелось иметь флажки для различных тегов, которые разделяют этот родительский тег.

Есть какие-нибудь идеи о том, как это сделать?

РЕДАКТИРОВАТЬ: Я думаю, что я неправильно понимаю перегруппировку, возможно, потому что я не могу заставить его работать как обычный список.Вот что я пробовал:

{% regroup form.tags by form.parent_tag as tags_list %}

<ul>
{% for parent_tag in tags_list %}
    <li>{{ parent_tag.grouper }}
    <ul>
        {% for tag in parent_tag.list %}
            <li>{{ tag.name }}: {{ tag.description }}</li>
        {% endfor %}
    </ul>
    </li>
{% endfor %}
</ul>

1 Ответ

0 голосов
/ 20 февраля 2019

Вы все еще не отображали представление, которое отправляет данные в шаблон.Ваши циклы for выглядят хорошо, но вы regroup должны выглядеть примерно так:

{% regroup form.tags by parent_tag as tags_list %}

Чтобы это работало, отдельные объекты в коллекции form.tags должны иметь атрибут или свойство parent_tag.

Как указано в комментарии, объекты в form.tags должны быть уже отсортированы по parent_tag, чтобы это работало, иначе вы получите более одной группы на parent_tag.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...