CodeIgniter & Datamapper в качестве внешнего интерфейса, Django Admin в качестве внутреннего, таблицы базы данных несовместимы - PullRequest
0 голосов
/ 25 марта 2010

Я создал базу данных для сайта, который я делаю, используя Django в качестве административного сервера. Однако, поскольку сервер, на котором размещен сайт, не сможет поддерживать Python, я считаю, что мне нужно сделать внешний интерфейс на PHP, и поэтому я решил использовать CodeIgniter вместе с Datamapper для сопоставления моделей / отношений .

Однако DataMapper требует, чтобы таблицы были в определенном формате, чтобы он работал, и Django отображает свои таблицы по-разному, используя имя приложения в качестве префикса в таблице. Я пытался использовать префиксы и переменные join_prefix в datamapper, но по-прежнему не отображаю их правильно.

Кто-нибудь использовал эту комбинацию? и если да, то как исправлена ​​проблема несовместимости имен таблиц БД? Есть ли что-нибудь, что я могу использовать, чтобы заставить их работать вместе?

---- редактировать: уточнение на бэкэнд --- Позвольте мне уточнить: я собираюсь запустить администратор с субдомена, указывающего на готовый к питону сервер. Однако я не могу переместить основное доменное имя с веб-сервера php only из-за определенных ограничений / обязательных контрактов, в которые компания попала. Я не хочу использовать маскировку / маскировку из-за seo целей.

Я использую администратора django, потому что я использую некоторые пакеты для создания симпатичного / функционального администратора, такие как grappelli для шаблона администратора, вместе с его редактором для редактирования новостей и т. Д., Также использую фотолог для управления фотографиями / галерея. и т.д.

Ответы [ 3 ]

0 голосов
/ 25 марта 2010

Два очевидных решения:

  1. Вместо того, чтобы взламывать одно или оба, чтобы хорошо работать друг с другом, эмулируйте администратора Django в коде PHP / CodeIgniter. **
  2. Получить сервер, который поддерживает Django. Сделайте фронтенд в Джанго.

Со временем любое из этих решений будет менее сложным, чем попытка сделать две разные структуры, использующие разные языки программирования, хорошо сочетающимися друг с другом. Я не могу себе представить будущее обслуживание, необходимое для обеспечения вечной совместимости и совместимости.

Кроме того, я предполагаю, говоря:

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

Вы действительно имеете в виду, что вы моделировали свои приложения, используя Django, и что вы также намереваетесь администрировать базу данных, полученную в результате этого моделирования, в администраторе Django. (В этом случае у вас уже есть слой «Модели», и вы должны просто попытаться создать остальную часть сайта в Django)

Если это так, то в ваших моделях вам нужно будет определить точные имена столбцов (db_column), которых ожидает DataMapper, а также вручную определить имена таблиц (db_table), включая таблицы M2M.

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

Также:

Если сервер не может поддерживать Python, где вы собираетесь запускать свой бэкэнд ? Другой сервер? Локально? Этот план просто не имеет большого смысла.

** Я бы не предлагал попробовать это. Я пытался создать бэкэнд CI, который на самом деле разделял те же идеи, что и администратор Django, прежде чем я узнал об администраторе Django. И, конечно же, однажды обнаружив Django, я сразу же прекратил работу над CI и продолжил работу над тем, что оказалось гораздо более удивительным фреймворком, который намного быстрее разрабатывается.

0 голосов
/ 25 марта 2010

Итак, насколько я понимаю, вы планируете использовать Django только из-за django-admin, и вы пытаетесь использовать CI для реального сайта, потому что сервер работает на PHP, верно?

Так почему бы вам не использовать фреймворк, который генерирует что-то вроде администратора Django, но который вы можете запустить на своем сервере?

Symfony Framework имеет действительно хороший админ-генератор в духе Django, и вы можете запустить его на своем сервере. Это избавит вас от кошмара обслуживания, который может случиться позже, когда @ jonwd7 ответил

0 голосов
/ 25 марта 2010

Если ваша проблема заключается в том, что Django использует те же таблицы, что и ваше другое программное обеспечение, используйте параметры db_column и db_table в моделях.

http://www.djangoproject.com/documentation/models/custom_columns/

...