author | Lennard de Rijk <ljvderijk@gmail.com> |
Sun, 19 Apr 2009 21:37:14 +0000 | |
changeset 2249 | 08d1367deb4f |
parent 323 | ff1a9aa48cfd |
permissions | -rw-r--r-- |
from django.db.backends.postgresql.introspection import DatabaseIntrospection as PostgresDatabaseIntrospection class DatabaseIntrospection(PostgresDatabaseIntrospection): def get_relations(self, cursor, table_name): """ Returns a dictionary of {field_index: (field_index_other_table, other_table)} representing all relationships to the given table. Indexes are 0-based. """ cursor.execute(""" SELECT con.conkey, con.confkey, c2.relname FROM pg_constraint con, pg_class c1, pg_class c2 WHERE c1.oid = con.conrelid AND c2.oid = con.confrelid AND c1.relname = %s AND con.contype = 'f'""", [table_name]) relations = {} for row in cursor.fetchall(): # row[0] and row[1] are single-item lists, so grab the single item. relations[row[0][0] - 1] = (row[1][0] - 1, row[2]) return relations