On Tue, 11 Oct 2016 09:19:15 Paul Eggleton wrote: > On Mon, 10 Oct 2016 12:47:11 Mark Hatle wrote: > > On 10/10/16 12:37 PM, Paul Eggleton wrote: > > > On Mon, 10 Oct 2016 04:48:41 Hatle, Mark wrote: > > >>> On Oct 10, 2016, at 2:54 AM, Paul Eggleton > > >>> <paul.eggle...@linux.intel.com> > > >>> > > >>> wrote: > > >>>> On Fri, 07 Oct 2016 13:20:50 Mark Hatle wrote: > > >>>> FYI, I have made sure these are re-based on top of paule/django18 and > > >>>> pushed to: > > >>>> > > >>>> git://git.yoctoproject.org/layerindex-web mhatle/django18 > > >>>> > > >>>> BTW for me upgrading from paule/django18 to this version. I only had > > >>>> to > > >>>> run 'manage.py syncdb'. > > >>>> > > >>>> This created the new database and added the missing field for the > > >>>> recommend.> > > >>> > > >>> I'm not sure how that worked there but it doesn't work here. If I take > > >>> a > > >>> database that works on paule/django18, run syncdb then open the admin > > >> > > >>> interface and click on "Layer branches" I get: > > >> We found a severe lack of instructions for creating migrations. There > > >> were > > >> instructions for adding and deleting full DBs but not changing them. > > >> We > > >> will need pointers or help to resolve this. > > >> > > >>> no such column: layerindex_layerbranch.collection > > >> > > >> I never got that, but I'm also running SQLite. May be the difference. > > > > > > I'm using sqlite here also. > > > > > >>> I'm afraid we really do need to create migrations whenever we change > > >>> the > > >>> models. > > >> > > >> Based on your prior comments we failed to find ANY reasonable examples, > > >> docs or instructions on doing this. So we are stuck without help. > > > > > > I'm happy to help directly if needed, but did you come across this > > > already? > > > > > > https://docs.djangoproject.com/en/1.8/topics/migrations/ > > > > Unfortunately that is the exactly document I was looking at and could not > > figure it out. > > > > I can the various commands, makemigrations and related.. and the system > > simply told me "no migrations necessary".. and didn't generate any. > > > > So we were never able to figure out what a migration should look like or > > how to generate it. > > > > If you (or someone else) can help us figure out how to create a migration, > > I suspect after the first one --- future ones will be much easier to > > generate. > > OK, so here's a step-by-step procedure - I suspect you'll need to stash and > unstash your config changes along the way as well: > > 1) Ensure you are using a database created at the place you want to start, > i.e. in this case paule/django18. > > 2) Determine which commits make changes to the models. This is one easy way: > > $ git log -p paule/django18..mhatle/django18 layerindex/models.py > > 3) We don't have an initial migration, so we need to create that first in a > single commit before all of the others, so to do that we'll direct the > rebase to edit the top commit on paule/django18 but instead of modifying > that we insert a commit after it. We also want to edit each commit found in > step 1 that made changes so we can add the migrations to them. > > $ git checkout mhatle/django18 > $ git rebase -i paule/django18^ > (now set the command to "e" on the oldest commit, in this case 6f8201fe, and > do the same for all the commits you found in step 1, then save & quit the > editor) > > 4) Create the initial migration: > > $ python3 manage.py makemigrations layerindex > Migrations for 'layerindex': > 0001_initial.py: > - Create model BBAppend > - Create model BBClass > - Create model Branch > - Create model LayerBranch > - Create model LayerDependency > - Create model LayerItem > - Create model LayerMaintainer > - Create model LayerNote > - Create model Machine > - Create model PythonEnvironment > - Create model Recipe > - Create model RecipeChange > - Create model RecipeChangeset > - Create model RecipeFileDependency > - Create model ClassicRecipe > - Add field recipe to recipefiledependency > - Add field changeset to recipechange > - Add field recipe to recipechange > - Add field layerbranch to recipe > - Add field dependency to layerdependency > - Add field layerbranch to layerdependency > - Add field layer to layerbranch > - Add field update_environment to branch > - Add field layerbranch to bbclass > - Add field layerbranch to bbappend > - Add field cover_layerbranch to classicrecipe > > 5) Apply the migrations to the database - this time we make it "fake" > because the tables already exist: > > $ python manage.py migrate layerindex --fake-initial > > 6) Create the initial migrations commit. (We won't need to do this ever > again) > > $ git add layerindex/migrations/ > $ git commit > > 7) Continue the rebase: > > $ git rebase --continue > > 8) Create the migration for the changes in this commit: > > $ python manage.py makemigrations layerindex > Migrations for 'layerindex': > 0002_distro.py: > - Create model Distro > > 9) Apply the migrations (*not* fake this time): > > $ python manage.py migrate layerindex > > 10) Amend the migrations to the current commit: > > $ git add layerindex/migrations/ > $ git commit --amend > > 11) Continue the rebase: > > $ git rebase --continue > > 12) Repeat steps 8-11 until the rebase finishes. > > That should do it. It gets more complicated if you rename columns, or > introduce columns that need initial data beyond a simple default, split > models etc. but in this case when you're simply adding or removing columns > it will take care of creating the migrations for you as long as you know > the steps (and I admit it's a bit awkward if you've never done it before - > I have the advantage of having done this already, not exactly with Django's > migrations but with South and that was pretty similar).
Heh, I knew I would muck something up - where you see "python" in the above, read "python3". (In my virtualenv-based setup it doesn't make any difference, but that may not be true for yours.) Cheers, Paul -- Paul Eggleton Intel Open Source Technology Centre -- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto