1

2 つ目の Django アプリを作ろうとしています: Django Oscar をベースにしたショップです。RTFDのチュートリアルに従っています。この段階http://django-oscar.readthedocs.org/en/latest/internals/getting_started.html#creating-product-classes-and-fulfillment-partnersに問題があります。

すべての Oscar 展開には、少なくとも 1 つの製品クラスと 1 つのフルフィルメント パートナーが必要です。これらは、構築したいショップに非常に固有であるため、自動的に作成されません。それらをセットアップする最も簡単な方法は、localhost:8000/admin/ で Django 管理インターフェースにログインし、そこで両方のインスタンスを作成することです。展開セットアップの場合は、データ移行として作成することをお勧めします。

ただし、管理者にログインしようとすると、生成されるエラーは次のとおりです。

ProgrammingError at /admin/

(1146, "Table 'winestoreoscar.django_admin_log' doesn't exist")
....
Error during template rendering

In template /home/david/.virtualenvs/winestoreoscar/local/lib/python2.7/site-packages/django/contrib/admin/templates/admin/index.html, error at line 65
1146

このテンプレートは、次の行が強調表示された状態でエラーに表示されます。

 <ul class="actionlist">
**65    {% for entry in admin_log %}**
66  <li class="{% if entry.is_addition %}addlink{% endif %}{% if entry.is_change %}changelink{% endif %}{% if entry.is_deletion %}deletelink{% endif %}">

そのため、テーブルが不足しているようです。データベースとしてMySQLを使用しています。mysqlプロンプトで、私は明らかなことを試しました..

mysql> CREATE TABLE winestoreoscar.django_admin_log;

しかし、エラーメッセージが表示されました...

ERROR 1113 (42000): A table must have at least 1 column

次に、管理テンプレートの for ループ全体を削除しようとしたところ、管理者は正常にレンダリングされましたが、保存しようとすると前のエラーが発生しました。

今、私は立ち往生しています。どんな助けでも大歓迎です。

編集:これはベースディレクトリからのツリーです(考えてみてください-admin.pyが必要ですか..?):

├── manage.py
└── oscarwinestore
    ├── __init__.py
    ├── __init__.pyc
    ├── settings.py
    ├── settings.py~
    ├── settings.pyc
    ├── urls.py
    ├── urls.py~
    ├── urls.pyc
    ├── wsgi.py
    └── wsgi.pyc

私のurls.pyは

from django.conf.urls import include, url
from oscar.app import application
from django.contrib import admin
admin.autodiscover()

urlpatterns = [
    url(r'^i18n/', include('django.conf.urls.i18n')),

    # The Django admin is not officially supported; expect breakage.
    # Nonetheless, it's often useful for debugging.
    url(r'^admin/', include(admin.site.urls)),

    url(r'', include(application.urls)),
]
4

1 に答える 1