On Sun, Jul 15, 2012 at 9:51 AM, Andy McCurdy <sed...@gmail.com> wrote:
>
> On Jul 14, 2012, at 6:37 PM, Russell Keith-Magee wrote:
>
>>
>> My only concern is:
>>
>>> We could store which fields have these hooks upon ModelBase.__new__
>>> construction and so skip most fields and overhead in __init__.
>>
>> I'm not sure if I'm misreading your intentions here, but just to be
>> sure -- I'd like to avoid explicitly naming certain field types as
>> "special" in ModelBase if at all possible. If we explicitly name
>> certain fields in ModelBase, then it means that third-parties with the
>> same requirement won't be able to exploit the same API entry point. In
>> the case of GenericForeignKey specifically, it also means that we
>> would be introducing a dependency (even if it was name-only) on
>> contrib into core -- which is something we've been trying to move away
>> from.
>
>
>
> I think Jeremy means doing something like this in ModelBase.__new__:
>
>
>     meta.fields_needing_init = [field for field in fields if hasattr(field, 
> 'model_pre_init')]
>
>
> And in ModelBase.__init__:
>
>
>     for field in self._meta.fields_needing_init:
>         field.model_pre_init(*args, **kwargs)
>
>
> This way, in ModelBase.__init__, only the fields that actually need to be 
> initialized have this method called.
>

That is indeed what I meant, but I think Anssi's probably right that
this belongs in contribute_to_class instead of a new adhoc thing in
ModelBase.__new__.

I'll take a swing at making this change.

Opened related ticket: https://code.djangoproject.com/ticket/18627

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@googlegroups.com.
To unsubscribe from this group, send email to 
django-developers+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en.

Reply via email to