diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-10-08 02:46:40 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-10-08 02:46:40 +0000 |
| commit | 51f16d14980c4a061ea3e224c52acf91008f0b20 (patch) | |
| tree | 5e713ade593621eefe9234b47945595248d39414 /lib/sqlalchemy/sql.py | |
| parent | 758828ed544966cd78524f450f877be5b789fee4 (diff) | |
| download | sqlalchemy-51f16d14980c4a061ea3e224c52acf91008f0b20.tar.gz | |
- the "foreign_key" attribute on Column and ColumnElement in general
is deprecated, in favor of the "foreign_keys" list/set-based attribute,
which takes into account multiple foreign keys on one column.
"foreign_key" will return the first element in the "foreign_keys" list/set
or None if the list is empty.
- added a user test to the relationships test, testing various new things this
change allows
Diffstat (limited to 'lib/sqlalchemy/sql.py')
| -rw-r--r-- | lib/sqlalchemy/sql.py | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py index a07536bc9..c113edaa3 100644 --- a/lib/sqlalchemy/sql.py +++ b/lib/sqlalchemy/sql.py @@ -618,8 +618,14 @@ class ColumnElement(Selectable, CompareMixin): may correspond to several TableClause-attached columns).""" primary_key = property(lambda self:getattr(self, '_primary_key', False), doc="primary key flag. indicates if this Column represents part or whole of a primary key.") - foreign_key = property(lambda self:getattr(self, '_foreign_key', False), doc="foreign key accessor. points to a ForeignKey object which represents a Foreign Key placed on this column's ultimate ancestor.") + foreign_keys = property(lambda self:getattr(self, '_foreign_keys', []), doc="foreign key accessor. points to a ForeignKey object which represents a Foreign Key placed on this column's ultimate ancestor.") columns = property(lambda self:[self], doc="Columns accessor which just returns self, to provide compatibility with Selectable objects.") + def _one_fkey(self): + if len(self._foreign_keys): + return list(self._foreign_keys)[0] + else: + return None + foreign_key = property(_one_fkey) def _get_orig_set(self): try: @@ -731,7 +737,7 @@ class FromClause(Selectable): return self._columns = util.OrderedProperties() self._primary_key = [] - self._foreign_keys = [] + self._foreign_keys = util.Set() self._orig_cols = {} export = self._exportable_columns() for column in export: @@ -1077,8 +1083,8 @@ class Join(FromClause): self._columns[column._label] = column if column.primary_key: self._primary_key.append(column) - if column.foreign_key: - self._foreign_keys.append(column.foreign_key) + for f in column.foreign_keys: + self._foreign_keys.add(f) return column def _match_primaries(self, primary, secondary): crit = [] @@ -1252,7 +1258,7 @@ class TableClause(FromClause): super(TableClause, self).__init__(name) self.name = self.fullname = name self._columns = util.OrderedProperties() - self._foreign_keys = [] + self._foreign_keys = util.Set() self._primary_key = [] for c in columns: self.append_column(c) |
