Я хотел бы получить вашу помощь, чтобы найти решение моей проблемы, обработав поле «многие ко многим» и отобразив результат.
Ожидаемый результат:
У меня есть список версий контента в моем приложении (например, 8-е издание, 9-е издание, 10-е издание ...), и для каждого из них у меня есть список коллекций с подрывной деятельностью (до 9,8, 9,9, 9,10 , всего 10,0, ...).
Я пытаюсь отобразить динамическую навигационную панель, которая содержит вкладки в зависимости от версии контента. Каждая вкладка содержит список подрывных действий.
Вкладка 9-е издание содержит 9,8, 9,9, 9,10, ...
Вкладка 10-е издание содержит 10.0, ...
---------
Моя модель :
У меня есть файл модели , который имеет:
class NavbarMenuSettings(models.Model):
""" A class to manage navbar menu of the application """
collection = models.ManyToManyField('publication.Collection', related_name='collection_list', symmetrical=False)
application = models.ForeignKey('publication.WebApplication', verbose_name=_('application'), related_name='application', on_delete=models.CASCADE)
title = models.CharField(max_length=30, verbose_name=_('title'), default=('Xth Edition (Current)'))
order = models.PositiveSmallIntegerField(default=1, verbose_name=_('menu order'), blank=True, null=False)
display = models.BooleanField(verbose_name=_('Display menu'), default=True)
class Meta:
verbose_name = _('menu setting')
verbose_name_plural = _('menu settings')
У меня есть menu.py файл, который позволяет обрабатывать мою навигационную панель:
def list_of_edition():
""" Return list of editions """
instance = NavbarMenuSettings.objects.filter(display=True).order_by('order')
return instance
edition_children = ()
for instance in list_of_edition():
edition_children += MenuItem(instance.collection.all(), reverse('home'), weight=150, separator=False),
for instance in list_of_edition():
Menu.add_item('edition', MenuItem(instance.title, '#', children=edition_children))
Я пытаюсь сделать это динамичным. Он создает новую вкладку для каждого отображаемого объекта NavbarMenuSettings. Но в каждой вкладке я получаю список всех подрывных операций или хочу, чтобы для каждой вкладки отображались только связанные подрывные операции.
Мой тест:
Если я напишу этот тест:
for element in list_of_edition():
print(element.title)
print(element.collection.all())
Отображает:
10th Edition (Current)
<QuerySet [<Collection: 10.0 lite>]>
9th Edition
<QuerySet [<Collection: 9.8 lite>, <Collection: 9.9 lite>, <Collection: 9.10 lite>]>
Но как мне справиться с моим меню для отображения каждой версии вкладки со списком связанных подрывных функций?
Я заблокирован на этом шаге.
Спасибо