Currently, i’m working on deserializing an object model, using the built in django deserialiser and i’m stuck with this KeyError exception, which i can’t get more information about which key is the issue. I’m not sure how to progress with debugging as it stands. Anyone have any ideas?
Note: I cannot use the builtin Django debug page.
This is a cut down version of my code:
try:
# loop over deserialised objects returned from 'deserializer'
print "serialise 123"
for obj in serializers.deserialize(format, data):
print "serialise 125"
return True
except DeserializationError:
return -1
except Exception as e:
print "===================="
print type(e)
print "********************"
print e.args
print "!!!!!!!!!!!!!!!!!!!!"
print e
return False
This is the Input XML:
<?xml version="1.0" encoding="utf-8"?>
<django-objects version="1.0">
<object pk="D5202F00-A8C7-11E1-B68A-00219B15530E" model="contacts.company">
<field type="CharField" name="name">Company Name</field>
<field type="CharField" name="internal_name">ComName</field>
<field type="CharField" name="reference">NoRef</field>
<field to="contacts.companystatus" name="company_status" rel="ManyToOneRel">9FBC97A3-2179-11E0-AEB7-005056C00008</field>
<field type="CharField" name="vat_number">248053</field>
<field type="CharField" name="registration_number">43905309</field>
<field type="FloatField" name="discount">4.0</field>
<field type="TextField" name="notes">gfhdfghdfghdfghdfgh</field>
<field type="TextField" name="jms_code"><None></None></field>
<field type="TextField" name="logo"><None></None></field>
</object>
<object pk="D53368E1-A8C7-11E1-AF74-00219B15530E" model="contacts.address">
<field to="contacts.company" name="company" rel="ManyToOneRel">D5202F00-A8C7-11E1-B68A-00219B15530E</field>
<field type="CharField" name="group_name">Company Name</field>
<field type="CharField" name="line1">Address 1</field>
<field type="CharField" name="line2">Address 2</field>
<field type="CharField" name="line3">Address 3</field>
<field type="CharField" name="town">Town</field>
<field type="CharField" name="county">Country</field>
<field type="CharField" name="postcode">BA13 3WQ</field>
<field type="CharField" name="country_iso">GB</field>
<field type="CharField" name="telephone">01225555555</field>
<field type="CharField" name="fax">01225555555</field>
<field type="CharField" name="email">Email@Addre.ss</field>
<field type="CharField" name="website">www.si.te</field>
<field type="CharField" name="description">Main</field>
<field type="CharField" name="jms_code"><None></None></field>
<field type="CharField" name="notes">Notes</field>
</object>
<object pk="D53D7B00-A8C7-11E1-A34B-00219B15530E" model="contacts.contact">
<field to="contacts.address" name="address" rel="ManyToOneRel">D53368E1-A8C7-11E1-AF74-00219B15530E</field>
<field to="generic.title" name="title" rel="ManyToOneRel">04CD69A1-7FD4-11E0-A8A3-7071BCB8D2AB</field>
<field type="CharField" name="forename">Forename</field>
<field type="CharField" name="surname">Surname</field>
<field type="CharField" name="position">Position</field>
<field type="CharField" name="mobile">07912345064</field>
<field type="CharField" name="direct_line">01225555555</field>
<field type="CharField" name="email">Email@Addre.ss</field>
<field type="IntegerField" name="origin">1</field>
<field type="IntegerField" name="lead_source">1</field>
<field type="TextField" name="notes">Notes</field>
<field to="contacts.contactstatus" name="contact_status" rel="ManyToOneRel">10293BF4-217A-11E0-AEB7-005056C00008</field>
<field to="contacts.contactmethod" name="contact_method" rel="ManyToOneRel">C240965A-2179-11E0-AEB7-005056C00008</field>
<field type="CharField" name="jms_code"><None></None></field>
</object>
<object pk="89E270EE-A8D3-11E1-AC38-00219B15530E" model="contacts.supplies">
<field to="contacts.supplier" name="supplier" rel="ManyToOneRel">43D00F61-A8C8-11E1-ACFE-00219B15530E</field>
<field to="boughtin.boughtincontrolpanel" name="bought_in_control_panel" rel="ManyToOneRel">4</field>
</object>
<object pk="89F0539E-A8D3-11E1-A7EE-00219B15530E" model="contacts.supplies">
<field to="contacts.supplier" name="supplier" rel="ManyToOneRel">43D00F61-A8C8-11E1-ACFE-00219B15530E</field>
<field to="boughtin.boughtincontrolpanel" name="bought_in_control_panel" rel="ManyToOneRel">5</field>
</object>
<object pk="43D00F61-A8C8-11E1-ACFE-00219B15530E" model="contacts.supplier">
<field to="contacts.company" name="company" rel="ManyToOneRel">D5202F00-A8C7-11E1-B68A-00219B15530E</field>
<field to="contacts.customercategory" name="category" rel="ManyToOneRel"><None></None></field>
<field type="CharField" name="account_number">1</field>
<field type="CharField" name="reference">NoRef</field>
<field type="TextField" name="notes"><None></None></field>
<field type="DateTimeField" name="date_created">2012-05-28 14:23:08</field>
<field type="DateTimeField" name="date_modified">2012-05-28 15:43:50</field>
<field to="auth.user" name="user" rel="ManyToOneRel">1</field>
<field type="CharField" name="jms_code"><None></None></field>
</object>
</django-objects>
This is the codes output:
serialise 123
====================
<type 'exceptions.KeyError'>
********************
(u'<?xml version="1.0" encoding="utf-8"?>\n<django-objects version="1.0">\n <object pk="D5202F00-A8C7-11E1-B68A-00219B15530E" model="contacts.company">\n <field type="CharField" name="name">Compan
y Name</field>\n <field type="CharField" name="internal_name">ComName</field>\n <field type="CharField" name="reference">NoRef</field>\n <field to="contacts.companystatus" name="company_statu
s" rel="ManyToOneRel">9FBC97A3-2179-11E0-AEB7-005056C00008</field>\n <field type="CharField" name="vat_number">248053</field>\n <field type="CharField" name="registration_number">43905309</field
>\n <field type="FloatField" name="discount">4.0</field>\n <field type="TextField" name="notes">gfhdfghdfghdfghdfgh</field>\n <field type="TextField" name="jms_code"><None></None></field>\n
<field type="TextField" name="logo"><None></None></field>\n </object>\n <object pk="D53368E1-A8C7-11E1-AF74-00219B15530E" model="contacts.address">\n <field to="contacts.company" name="company"
rel="ManyToOneRel">D5202F00-A8C7-11E1-B68A-00219B15530E</field>\n <field type="CharField" name="group_name">Company Name</field>\n <field type="CharField" name="line1">Address 1</field>\n <f
ield type="CharField" name="line2">Address 2</field>\n <field type="CharField" name="line3">Address 3</field>\n <field type="CharField" name="town">Town</field>\n <field type="CharField" name
="county">Country</field>\n <field type="CharField" name="postcode">BA13 3WQ</field>\n <field type="CharField" name="country_iso">GB</field>\n <field type="CharField" name="telephone">0122555
5555</field>\n <field type="CharField" name="fax">01225555555</field>\n <field type="CharField" name="email">Email@Addre.ss</field>\n <field type="CharField" name="website">www.si.te</field>\
n <field type="CharField" name="description">Main</field>\n <field type="CharField" name="jms_code"><None></None></field>\n <field type="CharField" name="notes">Notes</field>\n </object>\n
<object pk="D53D7B00-A8C7-11E1-A34B-00219B15530E" model="contacts.contact">\n <field to="contacts.address" name="address" rel="ManyToOneRel">D53368E1-A8C7-11E1-AF74-00219B15530E</field>\n <field
to="generic.title" name="title" rel="ManyToOneRel">04CD69A1-7FD4-11E0-A8A3-7071BCB8D2AB</field>\n <field type="CharField" name="forename">Forename</field>\n <field type="CharField" name="surnam
e">Surname</field>\n <field type="CharField" name="position">Position</field>\n <field type="CharField" name="mobile">07912345064</field>\n <field type="CharField" name="direct_line">01225555
555</field>\n <field type="CharField" name="email">Email@Addre.ss</field>\n <field type="IntegerField" name="origin">1</field>\n <field type="IntegerField" name="lead_source">1</field>\n <
field type="TextField" name="notes">Notes</field>\n <field to="contacts.contactstatus" name="contact_status" rel="ManyToOneRel">10293BF4-217A-11E0-AEB7-005056C00008</field>\n <field to="contacts
.contactmethod" name="contact_method" rel="ManyToOneRel">C240965A-2179-11E0-AEB7-005056C00008</field>\n <field type="CharField" name="jms_code"><None></None></field>\n </object>\n <object pk="89E
270EE-A8D3-11E1-AC38-00219B15530E" model="contacts.supplies">\n <field to="contacts.supplier" name="supplier" rel="ManyToOneRel">43D00F61-A8C8-11E1-ACFE-00219B15530E</field>\n <field to="boughti
n.boughtincontrolpanel" name="bought_in_control_panel" rel="ManyToOneRel">4</field>\n </object>\n <object pk="89F0539E-A8D3-11E1-A7EE-00219B15530E" model="contacts.supplies">\n <field to="contact
s.supplier" name="supplier" rel="ManyToOneRel">43D00F61-A8C8-11E1-ACFE-00219B15530E</field>\n <field to="boughtin.boughtincontrolpanel" name="bought_in_control_panel" rel="ManyToOneRel">5</field>\n
</object>\n <object pk="43D00F61-A8C8-11E1-ACFE-00219B15530E" model="contacts.supplier">\n <field to="contacts.company" name="company" rel="ManyToOneRel">D5202F00-A8C7-11E1-B68A-00219B15530E</fi
eld>\n <field to="contacts.customercategory" name="category" rel="ManyToOneRel"><None></None></field>\n <field type="CharField" name="account_number">1</field>\n <field type="CharField" name=
"reference">NoRef</field>\n <field type="TextField" name="notes"><None></None></field>\n <field type="DateTimeField" name="date_created">2012-05-28 14:23:08</field>\n <field type="DateTimeFie
ld" name="date_modified">2012-05-28 15:43:50</field>\n <field to="auth.user" name="user" rel="ManyToOneRel">1</field>\n <field type="CharField" name="jms_code"><None></None></field>\n </object>
\n</django-objects>',)
!!!!!!!!!!!!!!!!!!!!
u'<?xml version="1.0" encoding="utf-8"?>\n<django-objects version="1.0">\n <object pk="D5202F00-A8C7-11E1-B68A-00219B15530E" model="contacts.company">\n <field type="CharField" name="name">Company
Name</field>\n <field type="CharField" name="internal_name">ComName</field>\n <field type="CharField" name="reference">NoRef</field>\n <field to="contacts.companystatus" name="company_status
" rel="ManyToOneRel">9FBC97A3-2179-11E0-AEB7-005056C00008</field>\n <field type="CharField" name="vat_number">248053</field>\n <field type="CharField" name="registration_number">43905309</field>
\n <field type="FloatField" name="discount">4.0</field>\n <field type="TextField" name="notes">gfhdfghdfghdfghdfgh</field>\n <field type="TextField" name="jms_code"><None></None></field>\n
<field type="TextField" name="logo"><None></None></field>\n </object>\n <object pk="D53368E1-A8C7-11E1-AF74-00219B15530E" model="contacts.address">\n <field to="contacts.company" name="company"
rel="ManyToOneRel">D5202F00-A8C7-11E1-B68A-00219B15530E</field>\n <field type="CharField" name="group_name">Company Name</field>\n <field type="CharField" name="line1">Address 1</field>\n <fi
eld type="CharField" name="line2">Address 2</field>\n <field type="CharField" name="line3">Address 3</field>\n <field type="CharField" name="town">Town</field>\n <field type="CharField" name=
"county">Country</field>\n <field type="CharField" name="postcode">BA13 3WQ</field>\n <field type="CharField" name="country_iso">GB</field>\n <field type="CharField" name="telephone">01225555
555</field>\n <field type="CharField" name="fax">01225555555</field>\n <field type="CharField" name="email">Email@Addre.ss</field>\n <field type="CharField" name="website">www.si.te</field>\n
<field type="CharField" name="description">Main</field>\n <field type="CharField" name="jms_code"><None></None></field>\n <field type="CharField" name="notes">Notes</field>\n </object>\n <
object pk="D53D7B00-A8C7-11E1-A34B-00219B15530E" model="contacts.contact">\n <field to="contacts.address" name="address" rel="ManyToOneRel">D53368E1-A8C7-11E1-AF74-00219B15530E</field>\n <field
to="generic.title" name="title" rel="ManyToOneRel">04CD69A1-7FD4-11E0-A8A3-7071BCB8D2AB</field>\n <field type="CharField" name="forename">Forename</field>\n <field type="CharField" name="surname
">Surname</field>\n <field type="CharField" name="position">Position</field>\n <field type="CharField" name="mobile">07912345064</field>\n <field type="CharField" name="direct_line">012255555
55</field>\n <field type="CharField" name="email">Email@Addre.ss</field>\n <field type="IntegerField" name="origin">1</field>\n <field type="IntegerField" name="lead_source">1</field>\n <f
ield type="TextField" name="notes">Notes</field>\n <field to="contacts.contactstatus" name="contact_status" rel="ManyToOneRel">10293BF4-217A-11E0-AEB7-005056C00008</field>\n <field to="contacts.
contactmethod" name="contact_method" rel="ManyToOneRel">C240965A-2179-11E0-AEB7-005056C00008</field>\n <field type="CharField" name="jms_code"><None></None></field>\n </object>\n <object pk="89E2
70EE-A8D3-11E1-AC38-00219B15530E" model="contacts.supplies">\n <field to="contacts.supplier" name="supplier" rel="ManyToOneRel">43D00F61-A8C8-11E1-ACFE-00219B15530E</field>\n <field to="boughtin
.boughtincontrolpanel" name="bought_in_control_panel" rel="ManyToOneRel">4</field>\n </object>\n <object pk="89F0539E-A8D3-11E1-A7EE-00219B15530E" model="contacts.supplies">\n <field to="contacts
.supplier" name="supplier" rel="ManyToOneRel">43D00F61-A8C8-11E1-ACFE-00219B15530E</field>\n <field to="boughtin.boughtincontrolpanel" name="bought_in_control_panel" rel="ManyToOneRel">5</field>\n
</object>\n <object pk="43D00F61-A8C8-11E1-ACFE-00219B15530E" model="contacts.supplier">\n <field to="contacts.company" name="company" rel="ManyToOneRel">D5202F00-A8C7-11E1-B68A-00219B15530E</fie
ld>\n <field to="contacts.customercategory" name="category" rel="ManyToOneRel"><None></None></field>\n <field type="CharField" name="account_number">1</field>\n <field type="CharField" name="
reference">NoRef</field>\n <field type="TextField" name="notes"><None></None></field>\n <field type="DateTimeField" name="date_created">2012-05-28 14:23:08</field>\n <field type="DateTimeFiel
d" name="date_modified">2012-05-28 15:43:50</field>\n <field to="auth.user" name="user" rel="ManyToOneRel">1</field>\n <field type="CharField" name="jms_code"><None></None></field>\n </object>\
n</django-objects>'
Your exception handling code is actually what prevents you from getting at the useful debugging informations. Just remove all this useless exception handling, and you’ll get the full error message and a nice traceback.