Добавление салата к существующему проекту django выдает "модель уже зарегистрирована"

Я пытаюсь добавить салат в существующий проект Django. С очень простым настроенным каталогом функций я продолжаю получать django.contrib.admin.sites.AlreadyRegistered: Модель Family уже зарегистрирована. Я проверил на различный импорт (например, import .models против import reg.models), дубликаты импорта и ошибочные приложения, которые могут повторно импортировать мой admin.py безрезультатно. Кажется, ошибка исходит от салата, пытающегося перезагрузить модуль. Я не уверен, почему это хотело бы сделать это. Traceback находится ниже.

(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 ответа

Я столкнулся с той же проблемой, которая возникла из-за огурцового фона, и я хотел начать с "уборки", а затем записать свой первый файл функций. Но я столкнулся с этой ошибкой. Очевидно, что если в приложениях, в которых вы запускаете сбор урожая, отсутствует папка объектов (определенная LETTUCE_APPS внутри settings.py) и хотя бы один файл определения шага (.py) внутри нее. Похоже, что если он не использует функции в расположениях по умолчанию, он начинает исчерпывающий поиск, который перезагружает модуль и, таким образом, приводит к ошибке перезагрузки администратора.

Когда вы указываете свое приложение для запуска функций, указанных выше, вам нужно указать приложение, с которым вы работаете. Это можно сделать одним из нескольких способов.

Во-первых, указание приложения напрямую не работает, как описано выше, как при стандартных тестах.

  1. Вы можете добавить флаг приложения к команде. Документировано здесь. Пример: ./manage.py урожай -apps = my_app, my_app2

  2. Вы можете указать прямой путь к вашему каталогу функций. Пример: ./manage.py crop my_app / features

  3. Вы можете выйти из приложения и указать, какие приложения тестировать в файле settings.py с помощью: LETTUCE_APPS = ( 'my_app', 'my_app2',)

Другие вопросы по тегам