diff --git a/apiclient/ext/django.py b/apiclient/ext/django.py
new file mode 100644
index 0000000..4217eaa
--- /dev/null
+++ b/apiclient/ext/django.py
@@ -0,0 +1,36 @@
+from django.db import models
+
+class OAuthCredentialsField(models.Field):
+
+  __metaclass__ = models.SubfieldBase
+
+  def db_type(self):
+    return 'VARCHAR'
+
+  def to_python(self, value):
+    if value is None:
+      return None
+    if isinstance(value, apiclient.oauth.Credentials):
+      return value
+    return pickle.loads(base64.b64decode(value))
+
+  def get_db_prep_value(self, value):
+    return base64.b64encode(pickle.dumps(value))
+
+class FlowThreeLeggedField(models.Field):
+
+  __metaclass__ = models.SubfieldBase
+
+  def db_type(self):
+    return 'VARCHAR'
+
+  def to_python(self, value):
+    print "In to_python", value
+    if value is None:
+      return None
+    if isinstance(value, apiclient.oauth.FlowThreeLegged):
+      return value
+    return pickle.loads(base64.b64decode(value))
+
+  def get_db_prep_value(self, value):
+    return base64.b64encode(pickle.dumps(value))
diff --git a/samples/django_sample/buzz/models.py b/samples/django_sample/buzz/models.py
index 91cdcce..914b586 100644
--- a/samples/django_sample/buzz/models.py
+++ b/samples/django_sample/buzz/models.py
@@ -1,48 +1,15 @@
 import pickle
 import base64
 
-import apiclient.oauth
 from django.contrib import admin
 from django.contrib.auth.models import User
 from django.db import models
 
+from apiclient.ext.django import FlowThreeLeggedField
+from apiclient.ext.django import OAuthCredentialsField
+
 # Create your models here.
 
-class OAuthCredentialsField(models.Field):
-
-  __metaclass__ = models.SubfieldBase
-
-  def db_type(self):
-    return 'VARCHAR'
-
-  def to_python(self, value):
-    if value is None:
-      return None
-    if isinstance(value, apiclient.oauth.Credentials):
-      return value
-    return pickle.loads(base64.b64decode(value))
-
-  def get_db_prep_value(self, value):
-    return base64.b64encode(pickle.dumps(value))
-
-class FlowThreeLeggedField(models.Field):
-
-  __metaclass__ = models.SubfieldBase
-
-  def db_type(self):
-    return 'VARCHAR'
-
-  def to_python(self, value):
-    print "In to_python", value
-    if value is None:
-      return None
-    if isinstance(value, apiclient.oauth.FlowThreeLegged):
-      return value
-    return pickle.loads(base64.b64decode(value))
-
-  def get_db_prep_value(self, value):
-    return base64.b64encode(pickle.dumps(value))
-
 # The Flow could also be stored in memcache since it is short lived.
 class Flow(models.Model):
   id = models.ForeignKey(User, primary_key=True)
