Django loaddata设置错误

时间:2011-04-23 04:19:24

标签: django loaddata

尝试在本地计算机上使用loaddata时(win / sqlite):

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

3 个答案:

答案 0 :(得分:6)

除了设置初始项目之外,不要使用django-admin.py。创建项目后,请改用manage.py - 它会设置对设置文件的引用。

答案 1 :(得分:3)

syncdb将加载content_types,您需要在加载数据之前清除该表。像这样:

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

此外,请确保在syncdb时不创建超级用户或任何用户,因为这些也可能会与您的数据夹具发生冲突......

答案 2 :(得分:1)

有两种标准方法可以为Django提供设置。

  • 在Unix上使用 set (或 export set DJANGO_SETTINGS_MODULE=mysite.settings
  • 或者作为django-admin.py --settings=mysite.settings
  • 的选项

Django-config做的事情有所不同,因为它允许您拥有多个设置文件。 Django-config与manage.py一起使用以指定要使用的内容。你应该尽可能使用manage.py;它建立了环境。在您的情况下,尝试使用 - settings 指向您要在django-config的配置文件夹中使用的特定.py文件。

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

实际上--settings需要python包语法,所以也许<mysite>.config.<your settings>.py