My biggest objection to that naming scheme would be the numbering. If you have multiple people working on an app, it is likely that you at some point get multiples of a number as people add models simultaneously. What happens if there are multiples using a single number?
I much prefer the timestamp based system that is used by Rails, it make the risk of that kind of conflict a lot lower.
The migration engine will order the dependencies at runtime, and it will bail (and suggest creating a "merge" migration) if you have diverging trees of migrations. I find it pretty robust in practice.
> My biggest objection to that naming scheme would be the numbering. If you have multiple people working on an app, it is likely that you at some point get multiples of a number as people add models simultaneously. What happens if there are multiples using a single number?
We have this happen at work, when merging branches; this is what `./manage.py makemigrations --merge` exists for.
The only thing that annoys me to this day is that they have the numbers first. I get the logic why: it means they're ordered in the directory properly.
That said, it's very annoying in that they're not tab-completable... any time I have to edit one, I have to stop and hunt in the entire list for what I'm looking for.
I found that django's naming scheme for migrations is good enough; here are some real ones that I pulled out of my current project:
While they aren't semantically rich ('Why did you change absolute url on menu item?') I found that they are easy to distinguish and navigate.