ok only comment is you use django_evolution http://code.google.com/p/django-evolution/
"When you run ./manage.py syncdb, Django will look for any new models that have been defined, and add a database table to represent those new models. However, if you make a change to an existing model, ./manage.py syncdb will not make any changes to the database. This is where *Django Evolution* fits in." 2009/9/10 Thomas <thomas.e.rectenw...@gmail.com> > > Thanks for the advice. I just wanted to ensure I wasn't missing > something overtly obvious. A bit strange, but I both like, and > dislike the ORM at the same time. SQL is relatively clean, and > straightforward... I'd rather abstract more complicated things. I do > like the idea about adding a column, updating the model and dropping > the old one. > > Regardless, I can work with it. I gave up on SQLite3 and re-did my > settings.py to use postgreSQL as I'm significantly more comfortable > with that environment. So, things are a bit easier now. I am tempted > to just import a connection and write straight SQL... which seems very > easy to do using Django as they keep that option for custom SQL that > may very well exceed the logical limits of the ORM. I doubt anything > I'll be writing will get that complex though. So, I'll keep at it. > Thanks again. > > On Sep 10, 4:36 pm, Chris Czub <chris.c...@gmail.com> wrote: > > That is a short-coming of the Django ORM, unfortunately solving the > > problem of iterative schema changes is pretty difficult. > > > > There are some projects around that attempt to fix this issue, in > > varying stages of completion: > http://south.aeracode.org/wiki/Alternativesis a decent list. > > > > As for your specific question of changing the column name - eep :) > > It's slightly tedious to do that sort of thing seamlessly with the > > stock ORM. > > > > Here's the workflow I'd suggest for changing a column name: > > > > 1) Manually create a column named after what you want the new name to > > be, with the same data type, following the Django ORM's naming scheme > > 2) Copy the data from the old column for all rows into the newly created > column > > 3) Update the code and change the property name in the model code > > 4) Ensure the application seems to be working > > 5) Drop the old-named column > > > > Note: These instructions may not apply directly, depending on what > > your property is - in the case of a many-to-many relationship, for > > example, a join table is used. I'm sure you can figure out how to go > > from here, though. > > > > -Chris > > > > On Thu, Sep 10, 2009 at 1:31 PM, Thomas <thomas.e.rectenw...@gmail.com> > wrote: > > > > > I've been teaching myself Django over the past couple of days. Thus > > > far, everything has been going smoothly, as I typically do a lot of > > > non-web based Python coding, so am familiar with the language. > > > However, Django's DB API is my first look into ORM and how it works. > > > > > I understand the basics; how to create models and run a syncdb to > > > generate tables. I understand how to query, update/insert, etc. the > > > data by instantiating the class model and using the API methods > > > against it. All nice and well. > > > > > Where I get lost fast is when I need to make changes to a table. For > > > example, say I want to change the name of a column from 'foo' to > > > 'bar'. I can run an ALTER TABLE in SQL and do this easily, but I > > > thought the idea of ORM was that you weren't supposed to be using SQL > > > directly. I.e. is there a way to change a column name (or a table > > > name, or a attribute type, etc.) from within ORM, i.e. from within the > > > model class; or do I have to run the SQL, then change the model to > > > 'match' that SQL, and then run a syncdb. > > > > > I love the concept of being able to access data through objects, but > > > am just confused as what 'workflow' I should be following when doing > > > something like changing a column name. > > > > > Sorry for the basic question. Google hasn't been much help when > > > getting into these details. I can sort of 'figure it out' by running > > > the SQL, matching the model class and going from there... but wasn't > > > sure if that was the best, or only way. > > > > > Thanks, > > > Thomas > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---