On Tuesday, June 21, 2016 at 5:49:08 PM UTC+2, Marcin Nowak wrote: > > > > On Tuesday, June 21, 2016 at 4:00:51 PM UTC+2, Tim Graham wrote: >> >> No, it's not as simple as reverting the removal commit [0]. All the >> legacy schema generation methods are removed too [1]. >> > We don't want to add them back >> > > I know. > > >> but rather use the SQL generation from the migrations system >> (SchemaEditor classes). Please read this thread closely and look at >> Andrew's pull request [2]. >> >> > It is complicated for such simple job (dumping model schema to sql) but > I'll give a try, just later. > > No, Tim. I will not go through the Andrew's path. It is a "dead end". What the `sql` command should do is just simple dump model meta to desired sql dialect.
Migrations are designed to manage and apply model changes, so it is quite different use case. `sql` command should not depend on migrations, because: - they may be corrupted (common case with south/django migrations; they are unreliable) - achieving final state is a long journey through winding road, - app may not include migrations itself, - it is about SQL but not about managing model state/changes. The only way is to fix SchemaEditor by extractnig sql from create_model(), without executing it. But it's not so easy, because SE requires to be run as a context manager and executes deffered sqls at __exit__(). There are other SE`s methods which depends on defferend sql execution at `__exit__()`. Sorry, but it looks like code written in big hurry. If SchemaEditor will not be removed in near future, I can try to patch it and use as a base of new `sql` command. I think there is no other reasonable way to do that. Somebody wrote eariler that `sql*` commands can be written as an external app/package. They can't. Django internals must be fixed before this, or new app must provide complete solution including sql generator like SE (but this is a second nonsense, because SE is strongly coupled with db backends). And finally I would like to remind you, that `sql*` commands were removed by you. This was a mistake. Not the first, not the last. But when you're asking me what I'm hoping writing such mails, just please stand in my (and others) shoes and think a little about it. Marcin -- You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-developers+unsubscr...@googlegroups.com. To post to this group, send email to django-developers@googlegroups.com. Visit this group at https://groups.google.com/group/django-developers. To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/5bd5ef38-83b2-470e-b574-9a533860115a%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.