1

我是 Python/Django 菜鸟。因此,任何帮助将不胜感激。

尝试使用django-fluent-contents

模型.py

from django.core.urlresolvers import reverse
from django.db import models
from fluent_contents.models.fields import PlaceholderField, PlaceholderRelation, ContentItemRelation
from fluent_contents.models import ContentItem


class Article(models.Model):
    title = models.CharField("Title", max_length=200)
    slug = models.SlugField("Slug", unique=True)
    content = PlaceholderField("article_content")

    placeholder_set = PlaceholderRelation()
    contentitem_set = ContentItemRelation()

    class Meta:
        verbose_name = "Article"
        verbose_name_plural = "Articles"

    def __unicode__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('article-details', kwargs={'slug': self.slug})

管理员.py

from django.contrib import admin
from article.models import Article
from fluent_contents.admin import PlaceholderFieldAdmin


class ArticleAdmin(PlaceholderFieldAdmin):
    prepopulated_fields = {'slug': ('title',)}

    fieldsets = (
        (None, {
            'fields': ('title', 'slug', ),
        }),
        ("Contents", {
            'fields': ('content',),
            'classes': ('plugin-holder',),
        })
    )

admin.site.register(Article, ArticleAdmin)

我正在使用South进行迁移。

    db.create_table(u'article_article', (
        (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
        ('title', self.gf('django.db.models.fields.CharField')(max_length=200)),
        ('slug', self.gf('django.db.models.fields.SlugField')(unique=True, max_length=50)),
    ))
    db.send_create_signal(u'article', ['Article'])

看起来,没有为“内容”字段创建任何列。

因此,当我尝试通过 django admin 添加新的“文章”时-

FieldError at /manage/article/article/add/

Unknown field(s) (content) specified for Article. Check fields/fieldsets/exclude attributes of class ArticleAdmin.

如果我从 admin.py 中删除字段集

class ArticleAdmin(PlaceholderFieldAdmin):
    prepopulated_fields = {'slug': ('title',)}

admin.site.register(Article, ArticleAdmin)

django admin 中未显示“内容”字段

回复@vdboor ..这是我安装的应用程序...

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',

    # 3rd party apps
    'south',
    'django_extensions',
    'compressor',
    'debug_toolbar',
    'fluent_contents',
    'fluent_contents.plugins.text',
    'django_wysiwyg',

    # Project specific apps go here
    'article',
) 

此外,我使用 repo 中的示例应用程序作为指南......刚刚删除了额外的插件模型

仅供参考我正在使用

  Django==1.6
  MySQL-python==1.2.4
  South==0.8.4

感谢您的所有帮助:-)

4

2 回答 2

0

Still need to add extra fields. In the example shown, because the content is stored in a separate table - model ContentItem.

from fluent_contents.models.fields import PlaceholderField, PlaceholderRelation, ContentItemRelation

class Article(models.Model):
    title = models.CharField("Title", max_length=200)
    slug = models.SlugField("Slug", unique=True)
    content = PlaceholderField("article_content")

    placeholder_set = PlaceholderRelation()  # <-- this
    contentitem_set = ContentItemRelation()  # <-- and this

    class Meta:
        verbose_name = "Article"
        verbose_name_plural = "Articles"
于 2013-12-16T04:28:19.380 回答
0

看起来,没有为“内容”字段创建任何列。

没错,这PlaceholderField变成了反向泛型关系。

  • 您现在可以尝试删除该fieldsets声明,然后查看您遇到的其他错误。
  • 该存储库还包含一个example应用程序,您可以运行它并与您的应用程序进行比较。

愚蠢的问题,但fluent_contents在 INSTALLED_APPS 中?

于 2013-12-16T09:09:55.797 回答