diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2005-12-02 08:49:45 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2005-12-02 08:49:45 +0000 |
| commit | 9a205e891d9b63ee83590a20772f3ee22e713398 (patch) | |
| tree | 97b4668991f9da4e74643bbe38d7bb7715d90460 /lib/sqlalchemy/schema.py | |
| parent | 4b70825ae175483addf51b0848faa99bff3d7283 (diff) | |
| download | sqlalchemy-9a205e891d9b63ee83590a20772f3ee22e713398.tar.gz | |
added functionality to map columns to their aliased versions.
added support for specifying an alias in a relation.
added a new relation flag 'selectalias' which causes eagerloader to use a local alias name for its target table, translating columns back to the original non-aliased name as result rows come in.
Diffstat (limited to 'lib/sqlalchemy/schema.py')
| -rw-r--r-- | lib/sqlalchemy/schema.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/sqlalchemy/schema.py b/lib/sqlalchemy/schema.py index 3eb68d8b9..527d57023 100644 --- a/lib/sqlalchemy/schema.py +++ b/lib/sqlalchemy/schema.py @@ -196,7 +196,11 @@ class Column(SchemaItem): def _make_proxy(self, selectable, name = None): """creates a copy of this Column, initialized the way this Column is""" - c = Column(name or self.name, self.type, self.foreign_key, self.sequence, key = name or self.key, primary_key = self.primary_key, hidden=self.hidden) + if self.foreign_key is None: + fk = None + else: + fk = self.foreign_key.copy() + c = Column(name or self.name, self.type, fk, self.sequence, key = name or self.key, primary_key = self.primary_key, hidden=self.hidden) c.table = selectable c._orig = self.original if not c.hidden: @@ -229,6 +233,16 @@ class ForeignKey(SchemaItem): return ForeignKey(self._colspec) else: return ForeignKey("%s.%s" % (self._colspec.table.name, self._colspec.column.key)) + + def references(self, table): + """returns True if the given table is referenced by this ForeignKey.""" + return ( + # simple test + self.column.table is table + or + # test for an indirect relation via a Selectable + table.get_col_by_original(self.column) is not None + ) def _init_column(self): # ForeignKey inits its remote column as late as possible, so tables can |
