diff --git a/django/contrib/contenttypes/generic.py b/django/contrib/contenttypes/generic.py
index 40c3336..4bafe81 100644
--- a/django/contrib/contenttypes/generic.py
+++ b/django/contrib/contenttypes/generic.py
@@ -3,7 +3,6 @@ Classes allowing "generic" relations through ContentType and object-id fields.
 """
 
 from django.core.exceptions import ObjectDoesNotExist
-from django.db import connection
 from django.db.models import signals
 from django.db import models, router
 from django.db.models.fields.related import RelatedField, Field, ManyToManyRel
@@ -183,25 +182,20 @@ class ReverseGenericRelatedObjectsDescriptor(object):
         if instance is None:
             return self
 
-        # This import is done here to avoid circular import importing this module
-        from django.contrib.contenttypes.models import ContentType
-
         # Dynamically create a class that subclasses the related model's
         # default manager.
         rel_model = self.field.rel.to
         superclass = rel_model._default_manager.__class__
         RelatedManager = create_generic_related_manager(superclass)
-
-        qn = connection.ops.quote_name
+        
+        # Imported here to avoid circular import
+        from django.contrib.contenttypes.models import ContentType
 
         manager = RelatedManager(
             model = rel_model,
             instance = instance,
             symmetrical = (self.field.rel.symmetrical and instance.__class__ == rel_model),
-            join_table = qn(self.field.m2m_db_table()),
-            source_col_name = qn(self.field.m2m_column_name()),
-            target_col_name = qn(self.field.m2m_reverse_name()),
-            content_type = ContentType.objects.db_manager(instance._state.db).get_for_model(instance),
+            content_type = ContentType.objects.get_for_model(instance),
             content_type_field_name = self.field.content_type_field_name,
             object_id_field_name = self.field.object_id_field_name
         )
@@ -224,28 +218,23 @@ def create_generic_related_manager(superclass):
     """
 
     class GenericRelatedObjectManager(superclass):
-        def __init__(self, model=None, core_filters=None, instance=None, symmetrical=None,
-                     join_table=None, source_col_name=None, target_col_name=None, content_type=None,
-                     content_type_field_name=None, object_id_field_name=None):
-
+        def __init__(self, model=None, core_filters=None, instance=None,
+            symmetrical=None, content_type=None, content_type_field_name=None,
+            object_id_field_name=None):
             super(GenericRelatedObjectManager, self).__init__()
             self.core_filters = core_filters or {}
             self.model = model
-            self.content_type = content_type
             self.symmetrical = symmetrical
             self.instance = instance
-            self.join_table = join_table
-            self.join_table = model._meta.db_table
-            self.source_col_name = source_col_name
-            self.target_col_name = target_col_name
+            self.content_type = content_type
             self.content_type_field_name = content_type_field_name
             self.object_id_field_name = object_id_field_name
             self.pk_val = self.instance._get_pk_val()
-
+        
         def get_query_set(self):
             db = self._db or router.db_for_read(self.model, instance=self.instance)
             query = {
-                '%s__pk' % self.content_type_field_name : self.content_type.id,
+                '%s__pk' % self.content_type_field_name : self.content_type.pk,
                 '%s__exact' % self.object_id_field_name : self.pk_val,
             }
             return superclass.get_query_set(self).using(db).filter(**query)
@@ -253,7 +242,8 @@ def create_generic_related_manager(superclass):
         def add(self, *objs):
             for obj in objs:
                 if not isinstance(obj, self.model):
-                    raise TypeError("'%s' instance expected" % self.model._meta.object_name)
+                    raise TypeError("'%s' instance expected" % 
+                        self.model._meta.object_name)
                 setattr(obj, self.content_type_field_name, self.content_type)
                 setattr(obj, self.object_id_field_name, self.pk_val)
                 obj.save()
@@ -272,9 +262,9 @@ def create_generic_related_manager(superclass):
         clear.alters_data = True
 
         def create(self, **kwargs):
+            db = router.db_for_write(self.model, instance=self.instance)
             kwargs[self.content_type_field_name] = self.content_type
             kwargs[self.object_id_field_name] = self.pk_val
-            db = router.db_for_write(self.model, instance=self.instance)
             return super(GenericRelatedObjectManager, self).using(db).create(**kwargs)
         create.alters_data = True
 
