Opened 10 years ago

Closed 10 years ago

Last modified 7 years ago

#8298 closed (fixed)

Missing to_python methods causing issues with serialization

Reported by: Andrew Badr Owned by: nobody
Component: Uncategorized Version: master
Severity: Keywords:
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: UI/UX:


Lack of to_python on IntegerField? is breaking our tests that read from XML fixtures.

From what I can tell, this how things are supposed to work: (1) an IntegerField is read in as unicode (from the XML fixture), (2) the row is saved to the database, and (3) field is an integer on the next read from db. However, on one model, we have a post-save signal handler that expects the field to be an integer. This handler throws an exception when it gets unicode, so our tests break.

Is accepting strings a part of the database interface definition? I'm guessing we'd hit this same problem if using a form.

Change History (4)

comment:1 Changed 10 years ago by Malcolm Tredinnick

milestone: 1.0 maybe
Triage Stage: UnreviewedAccepted

The database backends only know about "%s" format markers, so integers and strings are treated similarly at that low-level. Thus, models can happily have strings assigned to integer fields and they'll be stored correctly.

However, I suspect we should be storing proper integers when we can, in the light of no model-aware cleaning and validation in 1.0. Since to_python() is only called at save time, it's not that costly. I'm +0 on considering this a bug, but it's borderline as to the priority. Making 1.0-maybe for that reason.

comment:2 Changed 10 years ago by Jacob

milestone: 1.0 maybe1.0

comment:3 Changed 10 years ago by Russell Keith-Magee

Resolution: fixed
Status: newclosed

(In [8515]) Fixed #8298: Added a to_python method for integer fields. This ensures that the data from deserialized instances is of correct type prior to saving. Thanks to Andrew Badr for the report.

comment:4 Changed 7 years ago by Jacob

milestone: 1.0

Milestone 1.0 deleted

Note: See TracTickets for help on using tickets.
Back to Top