A few days ago I mentioned Changeset 384 which included a new command, django-admin.py inspectdb <dbname>. It has also been tweaked and improved since it was initially committed. The other day I tried it out on a simple database structure, but I decided to throw a more complex example at it.
I decided to take the final depot application from the excellent Agile Web Development with Rails book. Beta books rule by the way. I executed the SQL in rails-code/depot_final/db/create.sql
from the the code tarball to set up the database structure. I then created a new project with django-admin startproject
and edited settings/main.py
to tell Django how to log in to my mysql database. After exporting the correct DJANGO_SETTINGS_MODULE
I ran django-admin.py inspectdb depot_rails
which gave me the following model:
# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
# * Rearrange models' order
# * Add primary_key=True to one field in each model.
# Feel free to rename the models, but don't rename
# db_table values or field names.
#
# Also note: You'll have to insert the output of
# 'django-admin.py sqlinitialdata [appname]'
# into your database.
from django.core import meta
class LineItem(meta.Model):
db_table = 'line_items'
fields = (
meta.IntegerField('id'),
meta.IntegerField('product_id'),
meta.IntegerField('order_id'),
meta.IntegerField('quantity'),
meta.FloatField('unit_price'),
)
class Order(meta.Model):
db_table = 'orders'
fields = (
meta.IntegerField('id'),
meta.CharField('name', maxlength=100),
meta.CharField('email', maxlength=255),
meta.TextField('address'),
meta.CharField('pay_type', maxlength=10),
meta.DateTimeField('shipped_at'),
)
class Product(meta.Model):
db_table = 'products'
fields = (
meta.IntegerField('id'),
meta.CharField('title', maxlength=100),
meta.TextField('description'),
meta.CharField('image_url', maxlength=200),
meta.FloatField('price'),
meta.DateTimeField('date_available'),
)
class User(meta.Model):
db_table = 'users'
fields = (
meta.IntegerField('id'),
meta.CharField('name', maxlength=100),
meta.CharField('hashed_password', maxlength=40),
)
Per the comment block at the top, you’re not home free yet, but at lot of tedious work has been done for you. This should definitely jumpstart the porting of existing applications to the Django platform.
Comments
99 responses to “Migrating Your App to Django”
It’s worth noting that the model-creation syntax will be changing sometime before Django’s official 1.0 release, in a backwards-incompatible way. Instead of specifying fields with:
fields = (
meta.CharField('name', maxlength=50),
meta.IntegerField('age')
)
You’ll specify fields with the following syntax:
name = meta.CharField(maxlength=50)
age = meta.IntegerField()
Watch Django ticket #122 to see when the above change is actually applied to the Django repository.
[…] Enquanto alguns artigos concentraram-se em fazer comentários sobre essa comparação ou de explicar como migrar de um web framework para o outro, outros voltaram para as comparações. entre as linguagens. […]
a32ea9cb24c9…
a32ea9cb24c91ec51557…
good luck,
дето тоже читал
I think, that you are not right. I am assured.
ob es die Analoga Gibt?
Registriert
It still that?
Thx, this has definitely made my day!
_______________________
wtf
Как Ð’Ñ‹ Ñами Ñказали “ну Ñ Ð½Ðµ говорю о блогахâ€, но тогда можно “не говорить†о многих разработках.
Прочитай вÑе SMS и проÑмотри звонки Ñвоих друзей или второй половинки. Ð£Ð½Ð¸ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ñ‚ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ð¸Ñ Ð¿ÐµÑ€ÐµÑ…Ð²Ð°Ñ‚Ð°. СДЕЛÐТЬ ЗÐПРОС
thanks repayment for the great low-down…
Мдаа..интереÑный поÑÑ‚. Вот только об Ñтом пишут вÑе кому не лень. Ини что, читают друг у друга новоÑти и Ñвоим Ñзыком их переÑказывают? Ð’ Ñео блогах Ñто оÑобенно заметно. Ðарод, Ñтолько новоÑтей интереÑных в мире…
мало инфы. Ð’Ñ‹ бы хоть поÑтаралиÑÑŒ напиÑать поÑто-то. Ð’ÑÑ‘-таки Ð²Ð°Ñ Ñ‡Ð¸Ñ‚Ð°ÐµÑ‚ много народа, да и в поиÑковике по Ñтой теме вы на первой Ñтранице…ай Ñй Ñй…не хорошо 🙁
Рмне вÑÑ‘ понравилоÑÑŒ. Забрал в букмарки.
Хороший блог, удачи в нашем нелёгком деле 🙂
Мне ваш Ñайт понравилÑÑ. Так же вÑех Ñ Ð´Ð½Ñ‘Ð¼ защитника отечеÑтва 🙂
Можно было бы и поподробнее напиÑать
ПрÑм шедевр, а не поÑÑ‚. Очень иÑкал инфу на Ñту тему.
ГорÑчее однако обÑуждение 🙂 Я бы к поÑту ещё фоток добавил бы…
Хороший Ñайт, удачи 🙂
Вот огромное человчеÑкое ÑпаÑибо вам за Ñтот блог. Кроме Ñтого поÑта нашёл ещё кучу интереÑного Ð´Ð»Ñ ÑебÑ. Теперь буду заходить Ñюда поÑтоÑнно..Я Ваш читатель 🙂
Хотела бы обменÑÑ‚ÑŒÑÑ Ñ Ð²Ð°Ð¼Ð¸ ÑÑылочкой. У Ð¼ÐµÐ½Ñ Ð±Ð»Ð¾Ð³ Ñхожей тематики. ЕÑли интереÑно, то напишите на xizabella24@gmail.com
ПонравилÑÑ Ð’Ð°Ñˆ Ñайт! Ð’ рунете вообще мало чего дельного в блогах пишут. Ð’ÑÑ‘ ÑтараютÑÑ Ð´Ñ€ÑƒÐ³ у друга Ñкопировать поÑÑ‚Ñ‹. Года 2 назад было интереÑно ходить по разным блогам-видно было Ñразу-люди ÑтаралиÑÑŒ пиÑать поÑÑ‚Ñ‹..а Ñ‰Ð°Ñ ÑƒÐ¶Ðµ только Ð´Ð»Ñ ÑндекÑа и ÑтараютÑÑ. Вообщем желаю продолжать Вам в Том же духе.
С уважением Ваш читатель.
+1 к предыдущему коментарию..
ООО..давно иÑкал. Забрал в букмарки. Ðвтор, пишите почаще..не забраÑывайте блог…КÑтати не мешало бы диз поменÑÑ‚ÑŒ.
Мне понравилÑÑ Ð²Ð°Ñˆ Ñайт. Добавил в букмарки 🙂
СпаÑибо, очень понравилоÑÑŒ
Ð¡Ñ‚Ð°Ñ‚ÑŒÑ Ñ…Ð¾Ñ€Ð¾ÑˆÐ°Ñ, только еÑли бы Ñ‚Ñ‹ оформил её немножко получше (добавил Ñкрин-другой, или какой-нибудь арт) и заголовки Ñделал – тебе бы вообще цены не было 🙂
+1 к предыдущему коментарию…форматирование можно было бы и поудобнее Ñделать. а так очень понравилоÑÑŒ
Да ладно, чего к человеку приÑтали. Ðорм там вÑÑ‘ Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼. Добавил в закладки ваш Ñайт.
Ух, Ñколько коментариев то тут набраÑали. Ðу отмечуÑÑŒ и Ñ-поÑÑ‚ бомба..так держать, молодцом автор!!!
прочитал, прошу автора и ко мне заглÑнуть) или добавте Ð¼ÐµÐ½Ñ Ð²Ð¾ френды в контакте мой номер там 4073064
+1 Ðа вÑÑкий Ñлучай Ñкопировал на жёÑткий. ПроÑьба к вам-пишите по чаще 🙂
Хороший обзор. Сразу видно что ÑтаралиÑÑŒ, за что и ÑпаÑибо. ИнтереÑно было почитать
ПоÑÑ‚ Ñупер!!! Ждём Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ 🙂
ПриÑтный дизаин у ваÑ. Ðе подÑкажете, где можно шаблоны такие найти? Желательно беÑплатно 🙂
Хороший Ñайт. Столько много инфы тут нарыл Ð´Ð»Ñ ÑебÑ.
Прикольный блог, жаль тормозит загрзка только..видимо хоÑтинг не очень хороший
ИнтереÑно напиÑано…ждём Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ 🙂 ПодпиÑалÑÑ Ð½Ð° ваш блог, буду Ñледить за новоÑÑ‚Ñми 🙂
Ñупер, мне понравилоÑÑŒ
СпаÑибо, очень интереÑÑ‚Ð½Ð°Ñ ÑтатьÑ! Только необходимо поправить шаблон блога, в Опере и в Мазиле иÑкажаетÑÑ Ð´Ð¸Ð·Ð°Ð¹Ð½! Рв ИЕ вÑе нормально!
Цифровые зеркальные фотоаппараты позволÑÑŽÑ‚ менÑÑ‚ÑŒ объективы.
Дополнительные возможноÑти при выборе оптики, что позволÑет раÑширÑÑ‚ÑŒ поле Ð·Ñ€ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ Ñнимать далеко раÑположенные объекты.
Ð”Ð»Ñ Ð¾Ñ‚Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñвета на видоиÑкатель в цифровых зеркальных фотоаппаратах иÑпользуетÑÑ Ð·ÐµÑ€ÐºÐ°Ð»Ð¾.
Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð²Ñ‹Ð»ÐµÑ‚Ð¸Ñ‚ птичка!
I propose this site to my boosters so it could be utilitarian & instructive for them besides. Dandy campaign.
You made certain good points there. I did a search on the topic and found a good number of persons will have the same opinion with your blog.
Strange this put up is totaly unrelated to what I used to be searching google for, but it surely was indexed at the first page. I guess your doing one thing proper if Google likes you enough to place you at the first web page of a non similar search.
Good issues?I’d notice that as any person who actually doesn’t write on blogs much (in reality, this may be my first post), I don’t suppose the time period ‘lurker’ could be very becoming to a non-posting reader. It’s now not your fault the least bit , but perhaps the blogosphere may just get a hold of a better, non-creepy title for the ninety% people that experience studying the content .
Thank you for making the honest attempt to explain this. I think very robust about it and would like to be informed more. If it’s OK, as you reach extra intensive wisdom, may you mind including extra posts very similar to this one with additional information? It could be extraordinarily useful and useful for me and my colleagues.
I am speechless. This is a superb weblog and really engaging too. Nice work! That’s no longer in point of fact a lot coming from an amateur writer like me, but it surely’s all I could say after diving into your posts. Great grammar and vocabulary. Not like different blogs. You really know what you?re talking approximately too. So much that you made me want to discover more. Your weblog has transform a stepping stone for me, my friend.