That's the approach I've used: either have a migration operation that you can run (included in a 3rd party or local app), or a management command that generates a migration file with the relevant custom operations.
Matt. On Friday, August 28, 2015 at 11:37:55 AM UTC+9:30, Andrew Godwin wrote: > > Hi Gavin, > > Hooking into the migration autodetector is currently not really possible - > it's quite inextensible, which is something I'd love to get ironed out in > the long term but isn't really possible right now to modify it from > third-party code. > > You can, however, supply custom migration Operation classes that people > could put into their migrations manually, or potentially have some other > way of outputting those migration files with operations in them (a lot of > the code to write them out is re-useable). Hopefully someone else has a > better idea! > > Andrew > > On Thu, Aug 27, 2015 at 6:27 PM, Gavin Wahl <gavi...@gmail.com > <javascript:>> wrote: > >> I'm interested in writing a third-party app that allows users to >> declaratively write check constraints and have them automatically be added >> and removed by migrations. I'm envisioning being able to attach a list of Q >> objects to your model, something like: >> >> >> class Meta: >> checks = [ >> Q(end_date__isnull=True) | Q(end_date__gt=F('start_date')) >> ] >> >> Now that we have migrations, formalized Meta, and custom lookups, is it >> possible for a third-party app to manage this seamlessly? >> >> I'm having trouble figuring out where it could hook in to migrations to >> detect changes to the check constraints, and automatically generate the >> migrations with operations to update the constraints. What code I should be >> reading to figure out how to do it? >> >> -- >> 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-develop...@googlegroups.com <javascript:>. >> To post to this group, send email to django-d...@googlegroups.com >> <javascript:>. >> Visit this group at http://groups.google.com/group/django-developers. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/django-developers/CACPudh1gRB_Jov_bH-maDGr4EBRugFuV3Y%2BBzYM9w0yyki7zkg%40mail.gmail.com >> >> <https://groups.google.com/d/msgid/django-developers/CACPudh1gRB_Jov_bH-maDGr4EBRugFuV3Y%2BBzYM9w0yyki7zkg%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > -- 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 http://groups.google.com/group/django-developers. To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/dedacf17-865e-4900-832c-2135039437ba%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.