mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-06-01 13:28:30 -04:00
- a change to the previous __mapper_args__ commit.
- the __mapper_args__ dict is copied when propagating to a subclass, and is taken straight off the class __dict__ to avoid any propagation from the parent. mapper inheritance already propagates the things you want from the parent mapper. [ticket:1393]
This commit is contained in:
@@ -166,9 +166,11 @@ CHANGES
|
||||
in theory make it easier for custom metaclasses to modify
|
||||
the state passed into _as_declarative.
|
||||
|
||||
- the __mapper_args__ dict is copied when propagating to a subclass.
|
||||
Still need to decide how the argument propagation should
|
||||
work in the bigger picture. [ticket:1393]
|
||||
- the __mapper_args__ dict is copied when propagating to a subclass,
|
||||
and is taken straight off the class __dict__ to avoid any
|
||||
propagation from the parent. mapper inheritance already
|
||||
propagates the things you want from the parent mapper.
|
||||
[ticket:1393]
|
||||
|
||||
- mysql
|
||||
- Fixed reflection bug whereby when COLLATE was present,
|
||||
|
||||
@@ -499,8 +499,11 @@ def _as_declarative(cls, classname, dict_):
|
||||
if not table.c.contains_column(c):
|
||||
raise exceptions.ArgumentError(
|
||||
"Can't add additional column %r when specifying __table__" % key)
|
||||
|
||||
mapper_args = dict(getattr(cls, '__mapper_args__', {}))
|
||||
|
||||
if '__mapper_args__' in dict_:
|
||||
mapper_args = dict(dict_['__mapper_args__'])
|
||||
else:
|
||||
mapper_args = {}
|
||||
if 'inherits' not in mapper_args:
|
||||
for c in cls.__bases__:
|
||||
if _is_mapped_class(c):
|
||||
|
||||
@@ -924,13 +924,15 @@ class DeclarativeInheritanceTest(DeclarativeTestBase):
|
||||
__tablename__ = 'people'
|
||||
id = Column(Integer, primary_key=True)
|
||||
discriminator = Column('type', String(50))
|
||||
__mapper_args__ = {'polymorphic_on': discriminator}
|
||||
__mapper_args__ = {'polymorphic_on': discriminator,'polymorphic_identity':'person'}
|
||||
|
||||
class Engineer(Person):
|
||||
primary_language = Column(String(50))
|
||||
|
||||
assert 'inherits' not in Person.__mapper_args__
|
||||
|
||||
assert class_mapper(Engineer).polymorphic_on is None
|
||||
|
||||
|
||||
def test_custom_join_condition(self):
|
||||
class Foo(Base):
|
||||
__tablename__ = 'foo'
|
||||
|
||||
Reference in New Issue
Block a user