Django CMS如何在admin中的模型上添加多个(零个或多个)链接

2024-09-26 22:12:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Django CMS的新手,我继承了一个有以下规范的网站:

  • Django 1.10.8版
  • Django CMS 3.4.5版
  • Python 2.7版

不幸的是,目前没有升级的选择。另外,请原谅,如果我的术语错了-我会感谢更正。你知道吗

我有一个带有StaffStaffTranslation(etc)模型的Staff应用程序,我有一个任务来更新admin,以允许向每个StaffTranslation添加一个或多个链接。但是,我很难确定最好的方法,以及使用什么组件。你知道吗

我已经确定了djangocms-link插件,这是可能的,但是我找不到关于如何向模型或管理页面添加多个实例的说明。另外,最新版本至少需要django1.11。你知道吗

我还发现了PageSmartLinkField——这看起来很聪明——但是我还没有发现如何将它与StaffTranslation对象的数据集成,或者如何在该对象的管理页面上显示它。你知道吗

我将感谢任何关于如何构建这个的建议-这似乎是一个足够简单的任务,我想我只是错过了一两个拼图。你知道吗

最终目的是在一个StaffTranslation(有自己的管理页面)上拥有零个或多个链接,并且能够至少向每个链接添加url和链接文本。如果有一些UI助手,允许轻松选择内部链接,那么这将是明智的,但是文本字段也可以。你知道吗

编辑:员工翻译模型

class StaffTranslation(TimeStampedModel):
    staff = models.ForeignKey(Staff, related_name='translations')
    language = models.ForeignKey(Language)

    specialist_work_title = HTMLField(max_length=128, null=True, blank=True)  # SpecialistWorkTitle
    description = HTMLField(null=True, blank=True)  # PersonText                                                                                                                                                                                                                                                                                                                                                
    experience = HTMLField(null=True, blank=True)  # Experience

    phone_office = models.CharField(max_length=128, null=True, blank=True)  # OfficePhone
    phone_cell = models.CharField(max_length=128, null=True, blank=True)  # CellPhone

    mentions = HTMLField(null=True, blank=True)  # Mentions
    education = HTMLField(null=True, blank=True)  # Education

    other_qualifications = HTMLField(null=True, blank=True)  # OtherQualifications

    meta_title = models.TextField(null=True, blank=True)  # MetaTitle
    meta_keywords = models.TextField(null=True, blank=True)  # MetaKeywords
    meta_description = models.TextField(null=True, blank=True)  # MetaDescription

    legacy_data = models.TextField(null=True, blank=True)

    objects = querysets.StaffTranslationQuerySet.as_manager()

    # I would like to add something here like links = models.ForeignKey(Link, related_name='links') - so should I make a Link model and add as a many to many relation, and how do I integrate that into the admin?

我遗漏了模型上定义的函数。你知道吗

同样,升级也不错,但最早要到夏天才能实现,现在必须解决这个任务。:)


Tags: django模型true链接models页面nulllength
1条回答
网友
1楼 · 发布于 2024-09-26 22:12:27

我认为这里为您提供的解决方案将是一个占位符字段,这样您就可以像任何其他插件一样为这个模型的每个实例添加CMS插件。例如:

from cms.models.fields import PlaceholderField


class StaffTranslation(TimeStampedModel):
    ...
    content = PlaceholderField(
        'staff_translation'
    )

然后在详细视图模板中执行{% render_placeholder object.content %},它将显示该对象的占位符,就像在任何标准页面模板中显示占位符一样。你知道吗

很明显,您可以添加任何CMS插件、链接或其他内容,并且将与StaffTranslation实例上的其他属性一起呈现。你知道吗

上面的文档在这里;http://docs.django-cms.org/en/latest/how_to/placeholders.html

相关问题 更多 >

    热门问题