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.
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.
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 к предыдущему коментарию..
ООО..давно искал. Забрал в букмарки. Автор, пишите почаще..не забрасывайте блог…Кстати не мешало бы диз поменять.