<gp> Why is from_db_value not called on Cls.objects.create()? For example, in the CashModel test, why isn't it tested that cash is an instance of Cash after create?
<gp> https://github.com/django/django/blob/master/tests/from_db_value/tests.py
<gp> Something like http://dpaste.com/1R69S5F I seem to be getting the wrong value for a custom primary key in the admin because of this
<gp> *only on the create redirect
<gp> Or is this expected to be handled by the field?
<timograham> gp: this seems similar to #24028
<gp> timograhm: would that test 'test_create()' in the dpaste fit in with the from_db_value? Or should the create test be somewhere else?
<timograham> seems okay there, does it pass or are you proposing a behavior change?
<gp> When I was trying to figure out why my values were incorrect I tried that test and it failed. But I would need to verify in a clean project before sending a pr
<gp> but I think the actual fix is outside of my knowledge
<gp> This ugly hack seems to fix it on my field if that means anything to you http://dpaste.com/3J0C5DD
<timograham> gp: it seems like it could be a useful behavior. I guess it has probably been discussed before but I'm not aware of the discussion. Maybe it would be worth raising on the mailing list and at least documenting the reasons for the current behavior if it can't be changed due to backwards compatibility.
def contribute_to_class(self, cls, name):
super(IntegerIdentifierBase, self).contribute_to_class(cls, name)
cls_save = cls.save
def save_wrapper(obj, *args, **kwargs):
cls_save(obj, *args, **kwargs)
value = getattr(obj, self.attname)
value = self.to_python(value)
setattr(obj, self.attname, value)
cls.save = save_wrapper
I think it adheres to the principle of least surprise since it makes Django
models behave just like normal Python classes in this regard.