Opened 13 years ago
Closed 13 years ago
#17602 closed Bug (fixed)
Django serializer does unnecessary db queries
Description ¶
When django serializes object, to get the foreign key id referenced in object it queries the db instead of just using the id e.g.
class QBAccount(CompanyModel): company = models.ForeignKey(Company) >>> from deretoapp.models import QBAccount >>> import logging >>> l = logging.getLogger('django.db.backends') >>> l.setLevel(logging.DEBUG) >>> l.addHandler(logging.StreamHandler()) >>> a = QBAccount.allobjects.all()[0] >>> from django.core import serializers >>> serializers.serialize('python', [a]) (0.000) SELECT `deretoapp_company`.`id`, ... FROM `deretoapp_company` WHERE `deretoapp_company`.`id` = 45995613-adeb-488f-9556-d69e856abe5f ; args=(u'45995613-adeb-488f-9556-d69e856abe5f',) [{'pk': u'3de881eb-8409-4089-8de8-6e24f7281f37', 'model': u'deretoapp.qbaccount', 'fields': {... 'company': u'45995613-adeb-488f-9556-d69e856abe5f' ....}}]
Here db query after serializers.serialize
is not needed because compay id could have been obtained directly by a.company_id
, and query itself shows id is being passed to db to get the id, it looks like problem is because a.company.id
is a db query which in ideal world also should not happen.
Change History (5)
comment:1 by , 13 years ago
Component: | Uncategorized → Core (Serialization) |
---|---|
Owner: | changed from | to
Status: | new → assigned |
by , 13 years ago
Attachment: | 17602.diff added |
---|
comment:2 by , 13 years ago
Has patch: | set |
---|---|
Triage Stage: | Unreviewed → Accepted |
comment:3 by , 13 years ago
Triage Stage: | Accepted → Ready for checkin |
---|
comment:4 by , 13 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Note:
See TracTickets
for help on using tickets.
In [17439]: