gpt4 book ai didi

python - 现有模型的 Django-cms 插件

转载 作者:太空宇宙 更新时间:2023-11-04 05:31:34 25 4
gpt4 key购买 nike

我有一个带有“新闻”应用程序的 Django 项目。这是模型:

class News(models.Model):
title = CharField(max_length=255)
content = TextField()

如何将django-cms添加到这个项目中,以便能够直接在模板中修改新闻?我知道我需要一个基于“新闻”模型的自定义插件,在这里我有两个选择:1) 我可以在单个插件中描述“新闻”模型的所有字段,但是会有一个窗口可以一次编辑所有字段。

插件,描述所有字段:

class NewsPlugin(CMSPlugin):
title = CharField(max_length=255)
content = TextField()
def __unicode__(self):
return self.title

2)第二个想法是为“新闻”中的每个单独字段编写插件并将它们组合到另一个插件中,但我不知道如何实现它。

新闻标题的单独插件:

class NewsTitle(CMSPlugin):
title = CharField(max_length=255)

新闻内容的独立插件:

class NewsContent(CMSPlugin):
content = TextField()

有什么想法吗?

最佳答案

您可能想要考虑的是插件的替代品,我发现它非常适合新闻应用程序。

您可以将新闻内容字段更改为 PlaceholderField这将允许您将插件添加到新闻项目,并使用标准模板占位符可用的所有常用选项配置占位符配置。

在我的新闻应用程序中,我有一个相当典型的设置,一个 ListView然后是 DetailView您可以在其中将 CMS 切换到编辑模式并编辑新闻项目的 PlaceholderField 中的插件。 .

你也可以 extend the toolbar提供链接以在模式对话框中添加新的新闻项目,或列出现有的新闻项目;

@toolbar_pool.register
class LatestNewsToolbar(CMSToolbar):

def populate(self):

news_menu = self.toolbar.get_or_create_menu(
NEWS_MENU_IDENTIFIER, NEWS_MENU_NAME
)
position = news_menu.get_alphabetical_insert_position(
_('Latest news'),
SubMenu
)

menu = news_menu.get_or_create_menu(
'latest_news_menu',
_('Latest News ...'),
position=position
)
try:
menu.add_modal_item(
_('Add News Item'),
url=admin_reverse('news_latestnews_add')
)
except NoReverseMatch:
# not in urls
pass
try:
menu.add_modal_item(
_('Existing News Items'),
url=admin_reverse('news_latestnews_changelist')
)
except NoReverseMatch:
# not in urls
pass

def post_template_populate(self):
pass

def request_hook(self):
pass

如果你喜欢这种工作方式,我想你会发现它比插件更合适也更强大:)

并查看此 CMS 区域的视频; https://www.youtube.com/watch?time_continue=2670&v=Dj8dhgmzlFM

关于python - 现有模型的 Django-cms 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36982211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com