2012-04-07 2 views
1

Не удается выполнить ряд связанных с именем связанных вопросов. Конечно, при запуске фактического сервера dev (с ./manage.py runserver) этого не происходит, я предполагаю, что, возможно, модели генерируются дважды? Я бег psycopg2 2.4.1, и вот мой тестовый выход:Сбой при выполнении Django при создании тестовой базы данных

(venv)[email protected]:boilerplate$ ./manage.py test 
Creating test database for alias 'default'... 
Error: One or more models did not validate: 
l10n.address: Accessor for field 'user_shipping' clashes with related field 'User.shipping_address'. Add a related_name argument to the definition for 'user_shipping'. 
l10n.address: Reverse query name for field 'user_shipping' clashes with related field 'User.shipping_address'. Add a related_name argument to the definition for 'user_shipping'. 
l10n.address: Accessor for field 'user_billing' clashes with related field 'User.billing_address'. Add a related_name argument to the definition for 'user_billing'. 
l10n.address: Reverse query name for field 'user_billing' clashes with related field 'User.billing_address'. Add a related_name argument to the definition for 'user_billing'. 
custom_registration.profile: Accessor for field 'user' clashes with related field 'User.profile'. Add a related_name argument to the definition for 'user'. 
custom_registration.profile: Reverse query name for field 'user' clashes with related field 'User.profile'. Add a related_name argument to the definition for 'user'. 
addressmodel.address: Accessor for field 'user_shipping' clashes with related field 'User.shipping_address'. Add a related_name argument to the definition for 'user_shipping'. 
addressmodel.address: Reverse query name for field 'user_shipping' clashes with related field 'User.shipping_address'. Add a related_name argument to the definition for 'user_shipping'. 
addressmodel.address: Accessor for field 'user_billing' clashes with related field 'User.billing_address'. Add a related_name argument to the definition for 'user_billing'. 
addressmodel.address: Reverse query name for field 'user_billing' clashes with related field 'User.billing_address'. Add a related_name argument to the definition for 'user_billing'. 
profiles.profile: Accessor for field 'user' clashes with related field 'User.profile'. Add a related_name argument to the definition for 'user'. 
profiles.profile: Reverse query name for field 'user' clashes with related field 'User.profile'. Add a related_name argument to the definition for 'user'. 

ответ

0

Это была проблема с Джанго-магазин тестов, как описано в этом комментарии: Django test fails when creating test database

Я не смог найти способ обойти это без изменения кода в приложения, так что я в конечном итоге только тестирование моих собственных приложений (работает ./manage.py test myapp вместо ./manage.py test

1

Это весьма возможно, что ваш test.py импортирует приложение, которое не находится внутри INSTALLED_APP, но имеет некоторые модели поля, указывающее на столкнулось модели. попробуйте grep user_shipping внутри приложений, импортированных в test.py, но не insde INSTALLED_APPS, и замените его.

./manage.py validate, который будет называться внутренним путем ./manage.py runserver, проверяет только модели, загруженные из приложений внутри INSTALLED_APP, и при этом не было ошибок при запуске devserver. Однако импорт внутри test.py приведет к появлению дополнительных моделей не установленных приложений, если они есть. для загрузки, а затем произойдет столкновение.

+0

У меня пока нет моих собственных тестов, поэтому я должен выяснить, какие тесты приложений выполняются, когда они не сработали? – Lacrymology

+0

@Lacrymology уверен, вы могли бы: 1. найти, есть ли в вас какое-либо имя_пользователя user_shipping модель и переименуйте ее; 2. используйте pdb или сигнал для проверки модели с конфликтом, здесь «Пользователь», на ранней стадии теста перед проверкой, проверяет, какая модель определяет r elited_name 'user_shipping' на' User' – okm

+0

hm .. это, похоже, проблема с django-shop. Он определяет модель адресата по умолчанию, но он рекомендует писать свои собственные. Затем он делает какую-то магию в своем файле моделей, чтобы либо ваша определенная модель, либо ее собственный, можно было получить с одного и того же имени. Если я удалю «магазин» с INSTALLED_APPS, тогда исчезнет много ошибок. – Lacrymology

Смежные вопросы