#27340: Model pre_init signal should provide an `instance` argument --------------------------------+-------------------- Reporter: Ask Solem Hoel | Owner: nobody Type: Uncategorized | Status: new Component: Uncategorized | Version: 1.10 Severity: Normal | Keywords: Triage Stage: Unreviewed | Has patch: 0 Easy pickings: 0 | UI/UX: 0 --------------------------------+-------------------- I struggle to find reasons as to why this argument is ommitted.
The current signature for pre_init is: {{{ class Model(six.with_metaclass(ModelBase)): _deferred = False def __init__(self, *args, **kwargs): signals.pre_init.send(sender=self.__class__, args=args, kwargs=kwargs) }}} I suggest that the signature should be: {{{ class Model(six.with_metaclass(ModelBase)): _deferred = False def __init__(self, *args, **kwargs): signals.pre_init.send(sender=self.__class__, args=args, kwargs=kwargs, instance=self) }}} Or alternatively, that the `post_init` signal contains the args and kwargs used to construct the model. The reason for wanting access to the instance in pre_init is that I want to track changes to the model since it was first retrieved from the database - This is currently not possible without subclassing Model, and that is not a realistic option for us as we deal with third party models. The current way we handle this is by using `pre_save` to fetch the row from the database again, but this is suboptimal and this a simple change would allow us to do this. -- Ticket URL: <https://code.djangoproject.com/ticket/27340> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/046.fc94fb75509c1f2b46e962efc1fa2670%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.