views:

398

answers:

3

I created a database for a site i'm doing using Django as the admin backend. However because the server where the site is hosted on, won't be able to support Python, I find myself needing to do the front end in PHP and as such i've decided to use CodeIgniter along with Datamapper to map the models/relationship.

However DataMapper requires the tables to be in a specific format for it to work, and Django maps its tables differently, using the App name as the prefix in the table. I've tried using the prefix & join_prefix vars in datamapper but still doesn't map them correctly.

Has anyone used a combination of this? and if so how have the fixed the issue of db table names being inconsistent? Is there anything out there that i can use to make them work together?

----edit: clarification on backend--- Let me clarify: i'm going to be running the admin from a subdomain pointing to a python ready server. However i can't move the main domain name from the php only webserver because of certain constraints/binding contracts the company got itself in. and don't want to use cloaking/masking because of seo purposes.

i'm using the django admin because i'm using some packages to make a pretty/functional admin, such as grappelli for the admin template, along with its editor for editing news stories, etc. also using photologue to manage photos/galleries. etc.

A: 

If your problem is simply making Django use the same tables as your other software, use the db_column and db_table parameters in the models.

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

celopes
Rasiel
this turns out to be the proper solution after all, rename the tables as needed and use db_table parameters in django models.
Rasiel
A: 

Two apparent solutions:

  1. Instead of hacking one or both to work well with each other, emulate the Django admin in PHP/CodeIgniter code. **
  2. Get a server that supports Django. Make the frontend in Django.

Time-wise, either one of those solutions will be less involving than trying to make two different frameworks using different programming languages mesh well together. I can't imagine the future maintenance required to ensure everlasting compatibility and interoperability.

Also, I assume by saying:

I created a database for a site i'm doing using Django as the admin backend

You really mean that you modeled your apps using Django, and that you also intend on administrating the database that has resulted from this modeling in the Django admin. (In which case you already have your Models layer complete and should just try building the rest of the site in Django)

If that's the case then in your models you are going to need to define the exact column names (db_column) that DataMapper will expect, as well as manually define the table names (db_table), including M2M tables.

You may also have to define all of your primary keys manually, if DM expects something named differently.

Also:

If the server can't support Python, where are you going to be running your backend? Different server? Locally? This plan just isn't making a lot of sense.

** I would not suggest trying this. I had been attempting to make a CI backend that actually shared much of the same ideas as Django's admin, before I knew about Django's admin. And of course once discovering Django, I dropped the CI work immediately and continued on with what I have found to be a much more amazing framework that is much faster to develop on.

jonwd7
Both of your options are almost impossible because of the constraints given to me in this project. I did model my apps using Django and intend to use the admin for administering the site.what you are saying is to change the db names to what CodeIgniter requires, and then make that change in Django accordingly using the db_table/db_column names?
Rasiel
Let me clarify: i'm going to be running the admin from a subdomain pointing to a python ready server. However i can't move the main domain name from the php only webserver because of certain constraints/binding contracts the company got itself in.i'm using the django admin because i'm using some packages to make a pretty/functional admin, such as grappelli for the admin template, along with its editor for editing news stories, etc. also using photologue to manage photos/galleries. etc.
Rasiel
A: 

So as I understand you plan on using Django just because of django-admin, and you are trying to use CI for the actual site because the server runs PHP, right?

So why don't you use framework that generates something like Django's admin but that you can run on your server?

The Symfony Framework has a really nice admin generator, in the spirit of Django's and you might be able to run it on your server. This would save you from the maintainance nightmare that might come later as @jonwd7 answered

Jeduan Cornejo
this would mean losing the advantage of reusable packages that Django comes with such as grappelli, pressroom, photologue, etc. which is the primary reason why i'm using django for the admin.
Rasiel