2

レタスを既存のDjango プロジェクトに追加しようとしています。非常に単純な機能ディレクトリが構成されているため、取得し続けますdjango.contrib.admin.sites.AlreadyRegistered: モデル ファミリは既に登録されています。インポートの違い ( import .modelsvsimport 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'...
4

2 に答える 2

4

「収穫」を実行してから最初の機能ファイルを作成することから始めることを期待して、キュウリのバックグラウンドから来る同じ問題に直面していました。しかし、私はそのエラーに直面しました。どうやら、ハーベストを実行しているアプリ内に機能フォルダー (settings.py 内の LETTUCE_APPS で定義) と、その中に少なくとも 1 つのステップ定義ファイル (.py) がない場合。デフォルトの場所にある機能に到達しない場合、モジュールをリロードする徹底的な検索が開始され、管理者のリロードが失敗するようです。

于 2013-08-27T14:50:34.067 に答える
0

上記の機能を実行するアプリケーションを指定する場合、実行対象のアプリケーションを指定する必要があります。これは、いくつかの方法のいずれかで実行できます。

まず、標準のテストで行うように、上記のようにアプリを直接指定することはできません。

  1. コマンドに app フラグを追加できます。ここに文書化されています。 例: ./manage.py ハーベスト -apps=my_app,my_app2

  2. features ディレクトリへの直接パスを指定できます。例: ./manage.py 収穫 my_app/features

  3. アプリをオフにして、settings.py ファイルでテストするアプリを指定できます: LETTUCE_APPS = ( 'my_app', 'my_app2', )

于 2013-11-21T21:49:35.297 に答える