#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.

Reply via email to