Thanks. I haven't heard of Django Evolution. Just searched for it on Google; it sounds exactly like what I'm looking for. In the meantime, I've found 'python manage.py inspectdb <application>' which helps a lot. It seems to general model classes by inspecting the DB the app. is connected to in settings.py. This helps a lot, both as a learning tool for how to write model classes, and as a way of putting in a correct class if you tend to do things the way I do, i.e. backwards... SQL heavy. I think I'll give Django Evolution a try.
On Sep 10, 11:04 pm, carlos <[email protected]> wrote: > ok only comment is you use > django_evolutionhttp://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 <[email protected]> > > > > > 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 <[email protected]> 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/Alternativesisa 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 <[email protected]> > > 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 [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---

