将莴苣添加到现有的django项目中会抛出已注册的模型

时间:2013-06-08 22:10:29

标签: django lettuce

我正在尝试将Lettuce添加到现有的 Django项目中。通过配置非常简单的功能目录,我不断获得django.contrib.admin.sites.AlreadyRegistered:模型系列已经注册。我检查了不同的导入(例如import .modelsimport reg.models),重复导入以及可能重新导入我的admin.py的错误应用程序无效。这个错误似乎来自生菜试图重新加载模块。我不确定为什么要这样做。回溯在下面。

(dwcoop)s001 cro-mbp[126]% DJANGO_SETTINGS_MODULE=settings.testing django-admin.py harvest reg
Creating test database for alias 'default'...
Django's builtin server is running at 0.0.0.0:8000
Traceback (most recent call last):
  File "/Users/cro/src/ve/dwcoop/lib/python2.7/site- packages/lettuce/django/management/commands/harvest.py", line 167, in handle
    result = runner.run()
  File "/Users/cro/src/ve/dwcoop/lib/python2.7/site-packages/lettuce/__init__.py", line 137, in run
    self.loader.find_and_load_step_definitions()
  File "/Users/cro/src/ve/dwcoop/lib/python2.7/site-packages/lettuce/fs.py", line 60, in find_and_load_step_definitions
    reload(module)  # always take fresh meat :)
  File "/Users/cro/src/ve/dwcoop/web/web/reg/admin.py", line 60, in <module>
    admin.site.register(Family, FamilyAdmin)
  File "/Users/cro/src/ve/dwcoop/lib/python2.7/site-packages/django/contrib/admin/sites.py", line 83, in register
    raise AlreadyRegistered('The model %s is already registered' % model.__name__)
AlreadyRegistered: The model Family is already registered
Destroying test database for alias 'default'...

2 个答案:

答案 0 :(得分:4)

我面临同样的问题,来自黄瓜背景,希望通过运行“收获”然后编写我的第一个功能文件开始。但我遇到了这个错误。显然,如果您正在运行的应用程序中没有功能文件夹(由settings.py中的LETTUCE_APPS定义),并且其中至少有一个步骤定义文件(.py)。看起来如果它没有落在默认位置的功能上,它会启动一个详尽的搜索,重新加载模块,从而导致管理员重新加载失败。

答案 1 :(得分:0)

指定要运行上述功能的应用程序时,需要指定要运行的应用程序。这可以通过以下几种方式之一完成。

首先,如上所述直接指定应用程序不像标准测试那样。

  1. 您可以将app标志添加到命令中。 Documented here. 示例:./ manage.py harvest -apps = my_app,my_app2

  2. 您可以指定功能目录的直接路径 示例:./ manage.py harvest my_app / features

  3. 您可以暂停应用,并在settings.py文件中指定要测试的应用: LETTUCE_APPS =(     'my_app应用',     'my_app2', )