diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-03-26 23:14:16 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-03-26 23:14:16 -0400 |
commit | b7a2d7de4854c26ea7773b1002852d4245cfcc10 (patch) | |
tree | e2c14cc6ce9ff41194cdae084ebeb1580e7756bb /lib/sqlalchemy/ext/declarative.py | |
parent | a1b821a8c6cae7fb4940c581f8de7b42704ef701 (diff) | |
download | sqlalchemy-b7a2d7de4854c26ea7773b1002852d4245cfcc10.tar.gz |
- relationships and columns with foreign keys aren't
allowed on declarative mixins, sorry. [ticket:1751]
Diffstat (limited to 'lib/sqlalchemy/ext/declarative.py')
-rw-r--r-- | lib/sqlalchemy/ext/declarative.py | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/sqlalchemy/ext/declarative.py b/lib/sqlalchemy/ext/declarative.py index ef1d3e68c..1f4658b60 100644 --- a/lib/sqlalchemy/ext/declarative.py +++ b/lib/sqlalchemy/ext/declarative.py @@ -507,7 +507,7 @@ Mapped instances then make usage of from sqlalchemy.schema import Table, Column, MetaData from sqlalchemy.orm import synonym as _orm_synonym, mapper, comparable_property, class_mapper from sqlalchemy.orm.interfaces import MapperProperty -from sqlalchemy.orm.properties import PropertyLoader, ColumnProperty +from sqlalchemy.orm.properties import RelationshipProperty, ColumnProperty from sqlalchemy.orm.util import _is_mapped_class from sqlalchemy import util, exceptions from sqlalchemy.sql import util as sql_util @@ -543,7 +543,16 @@ def _as_declarative(cls, classname, dict_): for name in names: obj = getattr(base,name, None) if isinstance(obj, Column): + if obj.foreign_keys: + raise exceptions.InvalidRequestError( + "Columns with foreign keys to other columns " + "are not allowed on declarative mixins at this time." + ) dict_[name]=column_copies[obj]=obj.copy() + elif isinstance(obj, RelationshipProperty): + raise exceptions.InvalidRequestError( + "relationships are not allowed on " + "declarative mixins at this time.") # doing it this way enables these attributes to be descriptors get_mapper_args = '__mapper_args__' in dict_ @@ -778,7 +787,7 @@ def _deferred_relationship(cls, prop): prop.parent, arg, n.args[0], cls)) return return_cls - if isinstance(prop, PropertyLoader): + if isinstance(prop, RelationshipProperty): for attr in ('argument', 'order_by', 'primaryjoin', 'secondaryjoin', 'secondary', '_foreign_keys', 'remote_side'): v = getattr(prop, attr) |