首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何扩展django zinnia网络日志条目

如何扩展django zinnia网络日志条目
EN

Stack Overflow用户
提问于 2012-11-04 02:42:42
回答 2查看 1.2K关注 0票数 2

我按照这里的指示做了

http://django-blog-zinnia.readthedocs.org/en/latest/how-to/extending_entry_model.html

不幸的是,我在扩展时遇到了麻烦。第一件奇怪的事情是-我必须改变入口模块的导入方式:

从…

代码语言:javascript
复制
from zinnia.models.entry import Entry
from zinnia.admin.entry import EntryAdmin

代码语言:javascript
复制
from zinnia.models import Entry
from zinnia.admin import EntryAdmin

更改后,我运行服务器并转到管理页面,但随后收到以下错误。

代码语言:javascript
复制
'RatingAdmin.fieldsets[0][1]['fields']' refers to field 'rating' that is missing from the form.

这是我的代码admin.py

代码语言:javascript
复制
from django.contrib import admin
from django.utils.translation import ugettext_lazy as _


from zinnia.models import Entry
from zinnia.admin import EntryAdmin

class RatingAdmin(EntryAdmin):
# into the 'Content' fieldset
fieldsets = ((_('Content'), {'fields': (
'title', 'content', 'image', 'status', 'rating')}),) + \
EntryAdmin.fieldsets[1:]

# Unregister the default EntryAdmin
# then register the EntryGalleryAdmin class
admin.site.unregister(Entry)
admin.site.register(Entry, RatingAdmin)

下面是我的抽象类模型happy_models.py

代码语言:javascript
复制
from django.db import models
from zinnia.models.entry import EntryAbstractClass

class Happy(models.Model):
    rating = models.CharField(max_length=200)

    def __unicode__(self):
        return u'Rating %s' % self.title

    class Meta(EntryAbstractClass.Meta):
        abstract = True

下面是我在settings.py中的zinnia入口库模型路径

代码语言:javascript
复制
ZINNIA_ENTRY_BASE_MODEL = 'happy.happy_models.Happy'

我刚刚在我的控制台上注意到了这个

代码语言:javascript
复制
/zinnia/models.py:30‌​2: RuntimeWarning: happy.happy_models.Happy cannot be imported

下面是我的目录设置

代码语言:javascript
复制
happy/
    admin.py
    happy_models.py
    views.py

在扩展条目时,我可能做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-06 12:21:27

我终于发现了--通过在交互模式下运行服务器,我能够进行调试。示例代码必须修改为:-

代码语言:javascript
复制
from zinnia.models import EntryAbstractClass

而不是

代码语言:javascript
复制
from zinnia.models.entry import EntryAbstractClass
票数 1
EN

Stack Overflow用户

发布于 2012-11-04 10:04:11

我想你跳过了两个部分:

从zinnia.models.entry

  • Tell
  1. 创建您自己的扩展模型: EntryAbstractClass以使用settings.py文件

中的ZINNIA_ENTRY_BASE_MODEL设置使用新模型

注意你的应用程序扩展是如何构建的,我通常会用到这样的东西:

代码语言:javascript
复制
/zinna_extras
    __init__.py
    entry_plus.py  <---- This is where your model that extends EntryAbstractClass goes
    admin.py <--- You got this part right above
    views.py <--- blank
    migrations/ <--- all original zinnia migrations + what you need for your model (see below)

请注意,这里没有models.py文件。这搞乱了Zinnia的进口风格。

如果您使用南向迁移,则可能还需要在settings.py中设置以下内容:

代码语言:javascript
复制
SOUTH_MIGRATION_MODULES = {
    'zinnia': 'zinnia_extras.migrations.zinnia',
}

将所有原始zinnia迁移复制到您的zinnia_extra应用程序的migrations文件夹中,然后为您的模型创建任何需要的新迁移。这只是告诉South使用你的应用程序作为Zinnia迁移的源,而不是通常的zinnia应用程序。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13212301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档