Allow field subclasses to require additional SQL
|Reported by:||mjtamlyn||Owned by:||nobody|
|Component:||Database layer (models, ORM)||Version:||master|
|Has patch:||yes||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||yes|
In postgres, a number of data types require a specific extension to be installed. We have one instance of this in core at present, which is the postgis extension. Our documentation recommends (in postgres 9.1+) that you explicitly create the extension in your primary database by hand, and then we customise the _create_test_db method on the postgis database backend to ensure the test database has the relevant extensions installed.
Other third party apps recommend adding the extension to the template to ensure it's present in tests.
I wish to avoid adding a custom backend to d.c.postgres if at all possible, especially as using it in conjunction with gis should be permissible. Consequently, I'd like if possible for model fields to have pre_create_sql to allow each individual field to create the extensions as needed. The same mechanism could also be used for a user defined custom field to create functions which could then be used as a custom transform object.
This feature will be useful for:
1) one part of the de-hack-gis project
3) citext, trigrams, generating uuids database side and other possible future features of d.c.postgres
I've written a draft patch. It probably needs some work (hence patch needs improvement) but an initial review of the names and code layout would be useful.