3

ローカル マシン (win/sqlite) で loaddata を使用しようとすると、次のようになります。

python django-admin.py loaddata dumpdata.json

次のエラーが表示されます。

raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE) ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

それが役立つ場合、私はdjangoconfigアプリを使用しています:

"""
Django-config settings loader.
"""

import os

CONFIG_IDENTIFIER = os.getenv("CONFIG_IDENTIFIER")
if CONFIG_IDENTIFIER is None:
    CONFIG_IDENTIFIER = 'local'

# Import defaults
from config.base import *

# Import overrides
overrides = __import__(
    "config." + CONFIG_IDENTIFIER,
    globals(),
    locals(),
    ["config"]
)

for attribute in dir(overrides):
    if attribute.isupper():
        globals()[attribute] = getattr(overrides, attribute)

プロジェクト>python manage.py loaddata dumpdata.json --settings=config.base

WARNING: Forced to run environment with LOCAL configuration.

Problem installing fixture 'dumpdata.json': Traceback
 (most recent call last):
  File "loaddata.py", line 174, in handle
    obj.save(using=using)

...


  File "C:\Python26\lib\site-packages\django\db\backends\sqlite3\base.py", line
234, in execute
    return Database.Cursor.execute(self, query, params)
IntegrityError: columns app_label, model are not unique
4

3 に答える 3

8

django-admin.py初期プロジェクトの設定以外には使用しないでください。プロジェクトを作成したら、manage.py代わりに使用します。これにより、設定ファイルへの参照がセットアップされます。

于 2011-04-23T09:16:51.760 に答える
3

syncdbcontent_types をロードするため、データをロードする前にそのテーブルをクリアする必要があります。このようなもの:

c:\> sqlite3 classifier.db
sqlite> delete from django_content_type;
sqlite> ^Z
c:\> python django-admin.py loaddata dumpdata.json

また、syncdb を実行するときにスーパーユーザーやユーザーを作成しないように注意してください。これらはデータ フィクスチャとも衝突する可能性があります ...

于 2012-08-06T13:55:00.533 に答える
1

Django に設定を提供するには、2 つの標準的な方法があります。

  • set (またはUnix ではexport ) の使用set DJANGO_SETTINGS_MODULE=mysite.settings
  • または、オプションとしてdjango-admin.py --settings=mysite.settings

Django-configでは、複数の設定ファイルを使用できるため、動作が異なります。Django-config は manage.py と連携して、使用するものを指定します。可能な限り、manage.py を使用する必要があります。それは環境を整えます。あなたの場合、--settingsが django-config の config フォルダーから使用する特定の .py ファイルを指す場所でこれを試してください。

django-admin.py loaddata dumpdata.json --settings=<config/settings.py>

実際 --settings は python パッケージの構文が必要なので多分<mysite>.config.<your settings>.py

于 2011-04-23T06:19:42.777 に答える