2

ここにある指示に従いました

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

残念ながら、私は拡張に問題があります。最初の奇妙な点は、エントリ モジュールのインポート方法を変更する必要があることです。

から

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

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

変更後、サーバーを実行して管理ページに移動しましたが、このエラーが発生しました。

'RatingAdmin.fieldsets[0][1]['fields']' refers to field 'rating' that is missing from the form.

これは私のコードadmin.pyです

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 です

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_ENTRY_BASE_MODEL = 'happy.happy_models.Happy'

コンソールでこれに気づきました

/zinnia/models.py:30‌​2: RuntimeWarning: happy.happy_models.Happy cannot be imported

これが私のディレクトリ設定です

happy/
    admin.py
    happy_models.py
    views.py

エントリを拡張するときに何が間違っている可能性がありますか?

4

2 に答える 2

4

次の 2 つの部分をスキップしたと思います。

  1. zinnia.models.entry から EntryAbstractClass を拡張する独自のモデルを作成します。
  2. settings.py ファイルの ZINNIA_ENTRY_BASE_MODEL 設定を使用して、新しいモデルを使用するように zinnia に指示します。

アプリ拡張機能の構造にも注意してください。私は通常、次のようなものを使用します。

/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 ファイルがないことに注意してください。それはジニアのインポート スタイルを台無しにします。

South マイグレーションを使用する場合は、settings.py で次のように設定することもできます。

SOUTH_MIGRATION_MODULES = {
    'zinnia': 'zinnia_extras.migrations.zinnia',
}

すべての元の zinnia 移行を zinnia_extra アプリの移行フォルダーにコピーしてから、モデルに必要な新しい移行を作成します。これは、通常のジニア アプリの代わりに、あなたのアプリをジニア マイグレーションのソースとして使用するようにサウスに指示するだけです。

于 2012-11-04T02:04:11.057 に答える
1

私は最終的に発見しました - サーバーをインタラクティブモードで実行することで、デバッグできました。サンプル コードは次のように変更する必要がありました:-

from zinnia.models import EntryAbstractClass

それ以外の

from zinnia.models.entry import EntryAbstractClass
于 2012-11-06T04:21:26.597 に答える