FakeModel = collections.namedtuple("FakeModel", "pk")
class YPToOneField(fields.ToOneField):
def dehydrate(self, bundle):
""" Patched to not load the related model when we only want a URI
note: this breaks support for callables and __ for non inlined resources.
"""
if not self.full:
pk = getattr(bundle.obj, self.attribute + "_id", None)
if pk is not None:
foreign_obj = FakeModel(pk)
else:
foreign_obj = None
if not foreign_obj:
if not self.null:
raise ApiFieldError("The model '%r' has an empty attribute '%s' and doesn't allow a null value." % (previous_obj, attr))
return None
self.fk_resource = self.get_related_resource(foreign_obj)
fk_bundle = Bundle(obj=foreign_obj, request=bundle.request)
return self.dehydrate_related(fk_bundle, self.fk_resource)
else:
return super(YPToOneField, self).dehydrate(bundle)
I've also nuked the paginator entirely:
class YPDummyPaginator(object):
def __init__(self, request_data, objects, resource_uri=None, limit=None, offset=0, max_limit=1000, collection_name='objects'):
self.objects = objects
self.collection_name = collection_name
def page(self):
return {
self.collection_name: self.objects,
}
'django.db.backends': {
'handlers': ['console'],
'level': 'DEBUG'
},
And this into models.py:
if 0:
def log_stack(orig):
def patch(*args, **argv):
print
import traceback
import sys
traceback.print_stack(file=sys.stdout)
print
return orig(*args, **argv)
return patch
from django.db.backends.util import CursorDebugWrapper
CursorDebugWrapper.execute = log_stack(CursorDebugWrapper.execute)
CursorDebugWrapper.executemany = log_stack(CursorDebugWrapper.executemany)
And that's where I'm at today.