#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 [email protected].
To post to this group, send email to [email protected].
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.

Reply via email to