web/lib/django/db/backends/postgresql_psycopg2/introspection.py
changeset 0 0d40e90630ef
equal deleted inserted replaced
-1:000000000000 0:0d40e90630ef
       
     1 from django.db.backends.postgresql.introspection import DatabaseIntrospection as PostgresDatabaseIntrospection
       
     2 
       
     3 class DatabaseIntrospection(PostgresDatabaseIntrospection):
       
     4 
       
     5     def get_relations(self, cursor, table_name):
       
     6         """
       
     7         Returns a dictionary of {field_index: (field_index_other_table, other_table)}
       
     8         representing all relationships to the given table. Indexes are 0-based.
       
     9         """
       
    10         cursor.execute("""
       
    11             SELECT con.conkey, con.confkey, c2.relname
       
    12             FROM pg_constraint con, pg_class c1, pg_class c2
       
    13             WHERE c1.oid = con.conrelid
       
    14                 AND c2.oid = con.confrelid
       
    15                 AND c1.relname = %s
       
    16                 AND con.contype = 'f'""", [table_name])
       
    17         relations = {}
       
    18         for row in cursor.fetchall():
       
    19             # row[0] and row[1] are single-item lists, so grab the single item.
       
    20             relations[row[0][0] - 1] = (row[1][0] - 1, row[2])
       
    21         return relations