FieldError - 未知字段:django-fluent-contents

时间:2013-12-16 01:05:49

标签: django django-models django-admin django-fluent

我是Python / Django noob。所以任何帮助都将不胜感激。

尝试使用django-fluent-contents

models.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})

admin.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'])

看起来,没有为'content'字段创建列。

所以当我尝试通过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

中未显示'content'字段

回复@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

感谢您的帮助: - )

2 个答案:

答案 0 :(得分:0)

仍然需要添加额外的字段。在显示的example中,因为content存储在单独的表中 - 模型 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"

答案 1 :(得分:0)

  

看起来,没有为'content'字段创建列。

这是正确的,PlaceholderField成为反向通用关系。

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

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