Django Как сделать внутреннюю ссылку на пользовательский компонент кнопки

Я работаю на DjangoCMS 3.11.3. Я не разработчик Django, в основном я занимаюсь .Net, но меня попросили помочь с CSS и HTML. Все прошло хорошо, так что теперь мы здесь...

В настоящее время у нас есть импортированный компонент Bootsrap4 Link/Button, который имеет гораздо больше опций, чем нужно PM и чем нужно конечным пользователям.

Этот импортируемый плагин имеет 2 уровня внутренних ссылок, и второй уровень является иерархическим (с отступом), как показано ниже:

enter image description here

Я, кажется, могу создать внутреннюю ссылку в моем пользовательском компоненте Button, но она имеет только один выпадающий список страниц (каждая из которых почему-то дублируется, значения дубликатов разные, если это что-то значит), и они не отступают (иерархические) вообще.

enter image description here

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

Вот models.py:

class CustomButton(CMSPlugin):
  link_is_optional = True

  name = models.CharField(
    verbose_name=_('Display name'),
    blank=True,
    max_length=255,
  )
  
  internal_link = models.ForeignKey(
    Page,
    verbose_name=_('Internal link'),
    blank=True,
    null=True,
    on_delete=models.SET_NULL,
    help_text=_('If provided, overrides the external link.'),
  )

Вот мой cms_plugins.py:

@plugin_pool.register_plugin
class CustomButton(CMSPluginBase):
  model = CustomButton
  name = _('Custom Button')
  module = _('Custom Plugins')
  render_template = 'cms_plugins/button.html'
  cache = False
  allow_children = True

Эти дают мне плоский выпадающий список. Любая помощь будет очень признательна.

Вернуться на верх