Skip to content

Instantly share code, notes, and snippets.

@glassresistor
Last active December 18, 2015 04:19
Show Gist options
  • Save glassresistor/5724431 to your computer and use it in GitHub Desktop.
Save glassresistor/5724431 to your computer and use it in GitHub Desktop.
Polymorphic related fields for tastypie
class PolymorphicRelatedField(fields.ToOneField):
def get_related_resource(self, related_instance):
"""
Instaniates the related resource.
"""
to = {
models.Asset: AssetResource,
models.Content: ContentResource,
}
related_model = get_model(related_instance._meta.app_label,
related_instance.__class__.__name__)
related_resource = to[related_model]()
# Fix the ``api_name`` if it's not present.
if related_resource._meta.api_name is None:
if self._resource and not self._resource._meta.api_name is None:
related_resource._meta.api_name = self._resource._meta.api_name
# Try to be efficient about DB queries.
related_resource.instance = related_instance
return related_resource
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment