Django中CMS(在线杂志)的灵活模型

Django中CMS(在线杂志)的灵活模型,django,content-management-system,Django,Content Management System,我打算重新设计一本在普隆制作的在线杂志。 我打算在Django做这件事。(原因很简单,我喜欢Django,而且我必须免费维护这个特定的网站。) 然而,我不确定我应该如何设计模型。 基本上,我们的想法是建立一个站点结构——在Plone中,它映射到几个包含内容对象的文件夹 这是一个非常简单的布局-省略了所有不相关的(?)细节 class Category(models.Model): parent = models.ForeignKey('self') # stuff like de

我打算重新设计一本在普隆制作的在线杂志。 我打算在Django做这件事。(原因很简单,我喜欢Django,而且我必须免费维护这个特定的网站。)

然而,我不确定我应该如何设计模型。 基本上,我们的想法是建立一个站点结构——在Plone中,它映射到几个包含内容对象的文件夹

这是一个非常简单的布局-省略了所有不相关的(?)细节

class Category(models.Model):
    parent = models.ForeignKey('self')
    # stuff like description, slug etc.

class Article(models.Model):
    category = models.ForeignKey(Catgegory)
    # teaser stuff
问题是:

我如何扩展、更改或破坏此布局,以使此应用程序的用户能够添加类似于自定义文章的项目,这些项目仍然可以由类别视图中的列表项目来处理

相关-这有助于解决问题:

注 我刚刚意识到这个问题与标记有多么相似。优秀的“django标签”应用程序
已经解决了这个问题。但是也有一些不同。

这里有一种方法:

class Category(models.Model):
    parent = models.ForeignKey('self')
    # stuff like description, slug etc.

class Entry(models.Model):
    category = models.ForeignKey(Catgegory)
    view_method = models.IntegerField(choices = settings.CMS_VIEW_METHODS)
    # teaser stuff
在应用程序文章中:

class Article(models.Model):
    category = models.OneToOneField(cms.models.Entry)

您可以简单地使用duck类型-创建与文章具有相同属性的模型(或者至少是
列出\u category
中的\u items\u及其模板所使用的属性)。这些模型只需要具有类别的外键,并且您必须以某种方式配置
列出类别中的项目来查找类别的相关属性。e、 g:

def list_items_in_category(request):
    l = []
    for attr in getattr(settings, 'ITEMS_ON_CATEGORY', ['article_set']):
        l.extend(getattr(Category, attr).all())
    # do something with 'l' in a template.

如果您不想以这种方式限制自定义模型的实际属性,您可以创建包装器类,使它们看起来像文章。您只需指定文章的“接口”即可查看该视图。

顺便说一句,如果您想在Django中制作CMS,您可能需要查看。

oops。在我的调查中,我怎么会错过那个?谢谢