0

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

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

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

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

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

ответ

0

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

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

+0

Совсем наоборот, Django в порядке, его CodeIgniter & DataMapper, что я буду работать с таблицами Django – Rasiel

+0

, это оказывается правильным решением после все, переименуйте таблицы по мере необходимости и используйте параметры db_table в моделях django. – Rasiel

0

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

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

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

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

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

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

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

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

также:

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

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

+0

Оба ваших варианта почти невозможны из-за ограничений, данных мне в этом проекте. Я моделировал свои приложения с помощью Django и намеревался использовать администратора для администрирования сайта. Что вы говорите, это изменить имена db на то, что требуется CodeIgniter, и затем внести это изменение в Django соответственно с помощью имен db_table/db_column? – Rasiel

+0

Позвольте мне уточнить: я собираюсь запустить администратора из поддомена, указывающего на сервер, готовый для python. Однако я не могу перенести основное доменное имя из веб-сервера php только из-за определенных ограничений/контрактов, в которые компания попала. Я использую администратор django, потому что я использую некоторые пакеты, чтобы сделать красивую/функциональную admin, например grappelli для шаблона администратора, а также его редактор для редактирования новостей и т. д., также используя фотолог для управления фотографиями/галереями. и т. д. – Rasiel

0

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

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

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

+0

это означало бы потерю преимуществ многоразовых пакетов, которые Django поставляется с такими, как grappelli, пресс-центр, фотолог и т. д., что является основной причиной, по которой я использую django для администратора. – Rasiel