【问题标题】:django-cms default menu extend Menu or CMSAttachMenu?django-cms 默认菜单扩展 Menu 还是 CMSAttachMenu?
【发布时间】:2014-05-23 22:38:49
【问题描述】:

我正在尝试使用 django-cms 构建一个非常简单的 wiki 类型的站点。

我有 1 个应用,定义了 2 个模型:

class Subject(models.Model):
    label=models.CharField

class Topic(models.Model):
    ...
    cat = models.ForeignKey('topics.Category',
    blank=True,
    default=None,
    help_text=u'Please choose a category for this topic',
    null=True
)

我试图让默认菜单将主题类显示为顶级选项,主题类作为每个主题的子级别。总共将有4个主题。例如:

主题 1

-主题1

-topic2

主题 2

-topic3

-topic4

等等。

我已经阅读了所有 django-cms 文档,但我仍然感到困惑。在我的 menu.py 中,我应该扩展 Menu 还是 CMSAttachMenu?我需要 4 个不同的发电机吗?使用生成器时如何引用 ForeignKey 字段?

我是初学者,非常感谢任何帮助

【问题讨论】:

    标签: python django django-cms


    【解决方案1】:

    你可以这样做:

    # menu.py
    
    from django.core.urlresolvers import reverse
    from django.utils.translation import ugettext_lazy as _
    
    from cms.menu_bases import CMSAttachMenu
    from menus.base import NavigationNode
    from menus.menu_pool import menu_pool
    
    from .models import Subject
    
    
    class SubjectsMenu(CMSAttachMenu):
        name = _("Subjects Menu")
    
        def get_nodes(self, request):
            nodes = []
            cnt = 0
            for subject in Subjects.objects.all():
                subject_node_id = cnt
                node = NavigationNode(
                    subject.label,
                    reverse('subject_view_detail', args=(subject.pk,)),
                    subject_node_id
                )
                nodes.append(node)
                for topic in subject.topics.all():
                    cnt += 1
                    node = NavigationNode(
                        topic.name,
                        reverse('topic_view_detail', args=(topic.pk,)),
                        cnt,
                        subject_node_id  # parent
                    )
                    nodes.append(node)
                cnt += 1
            return nodes
    
    menu_pool.register_menu(SubjectsMenu)
    

    然后您可以将此菜单添加到您的 AppHook 或从管理员附加。

    【讨论】:

      猜你喜欢
      • 2017-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      • 2014-04-13
      • 2012-03-30
      • 1970-01-01
      • 2015-01-11
      相关资源
      最近更新 更多