Вопрос по python – Джанго: столкновение названия модели

3

Я пытаюсь использовать различные приложения с открытым исходным кодом в моем проекте. Проблема заключается в том, что одно и то же имя модели используется двумя разными приложениями с собственным определением модели.

Я пытался с помощью:

<code>    class Meta:
        db_table = "db_name"
</code>

но это не сработало. Я все еще получаю ошибку конфликта имени поля в syncdb. Какие-либо предложения.

Update

Я на самом деле пытаюсь интегрировать Satchmo с Pinax. И ошибка:

Error: One or more models did not validate:

contact.contact: Accessor for field 'user' clashes with related m2m field 'User.contact_set'. Add a related_name argument to the definition for 'user'.

friends.contact: Accessor for m2m field 'users' clashes with related field User.contact_set'. Add a related_name argument to the definition for 'users'.

Вы правы, имена таблиц уже уникальны. Я проанализировал модель и модель "Контакт" в двух моделях двух разных приложений. Когда я закомментирую одну из этих моделей, она работает нормально.

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

Пожалуйста, вставьте ошибку. Также возможно, что на самом деле вы получаете столкновение related_name из-за того, что несколько ForeignKeys указывают на одну и ту же модель. Carl Meyer
Вы включили приложение дважды? В дополнение к фактическому сообщению об ошибке, пожалуйста, отправьте параметр INSTALLED_APPS из вашего settings.py. S.Lott
Конечно, ярлыки приложений для разных приложений должны снизить риск конфликта. Можете ли вы дать более подробную информацию об ошибке? Antti Rasinen
Да, таблицы db именуются шаблоном "& lt; appname & gt; _ & lt; modelname & gt;", поэтому конфликт маловероятен. По крайней мере, это то, что я вижу на PostgreSQL. Пожалуйста, предоставьте больше данных, таких как фактический результат неудачного запуска syncdb Ber

Ваш Ответ

1   ответ
6

что и у Satchmo, и у Pinax есть модель Contact с ForeignKey to User. Django пытается добавить & quot; contact_set & quot; Обратный атрибут отношения к Пользователю для каждого из этих ForeignKeys, так что есть конфликт.

Решение состоит в том, чтобы добавить что-то вроде related_name = & quot; pinax_contact_set & quot; в качестве аргумента для ForeignKey в модели контактов Pinax или аналогичным образом в модели контактов Satchmo. Это потребует редактирования источника непосредственно для одного или другого. Возможно, вам удастся найти способ сделать это с помощью monkeypatching, но я ожидаю, что это будет сложно.

Похожие вопросы