summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Bogun <surabujin@surabujin.org.ua>2016-09-14 00:32:47 +0300
committerDmitry Bogun <surabujin@surabujin.org.ua>2016-09-27 12:52:27 +0300
commit70fbe95bcad17e677a104e3edec2869576a1473c (patch)
tree16d282a8c480c303c9aff51decac3a37beec616d
parentf09056323e2c7b51ecdf02f8c31e7529382ed0f8 (diff)
downloadsqlalchemy-pr/306.tar.gz
orm.ext.declared_attr.cascading have incorrect example in docstringpr/306
There is an error in code example in docstring for declared_attr.cascading.
-rw-r--r--doc/build/changelog/migration_10.rst15
-rw-r--r--doc/build/orm/extensions/declarative/mixins.rst8
-rw-r--r--lib/sqlalchemy/ext/declarative/api.py16
3 files changed, 18 insertions, 21 deletions
diff --git a/doc/build/changelog/migration_10.rst b/doc/build/changelog/migration_10.rst
index f539d8b94..3a6bf06a9 100644
--- a/doc/build/changelog/migration_10.rst
+++ b/doc/build/changelog/migration_10.rst
@@ -163,18 +163,17 @@ is affixed to the base class only, and just inherited from subclasses.
With :attr:`.declared_attr.cascading`, individual behaviors can be
applied::
- class HasSomeAttribute(object):
+ class HasIdMixin(object):
@declared_attr.cascading
- def some_id(cls):
+ def id(cls):
if has_inherited_table(cls):
- return Column(ForeignKey('myclass.id'), primary_key=True)
+ return Column('id', Integer, primary_key=True)
else:
- return Column(Integer, primary_key=True)
+ return Column('id', Integer, ForeignKey('myclass.id'),
+ primary_key=True)
- return Column('id', Integer, primary_key=True)
-
- class MyClass(HasSomeAttribute, Base):
- ""
+ class MyClass(HasIdMixin, Base):
+ __tablename__ = 'myclass'
# ...
class MySubClass(MyClass):
diff --git a/doc/build/orm/extensions/declarative/mixins.rst b/doc/build/orm/extensions/declarative/mixins.rst
index e4acc8750..20459bf75 100644
--- a/doc/build/orm/extensions/declarative/mixins.rst
+++ b/doc/build/orm/extensions/declarative/mixins.rst
@@ -466,17 +466,17 @@ foreign key. We can achieve this as a mixin by using the
function should be invoked **for each class in the hierarchy**, just like
it does for ``__tablename__``::
- class HasId(object):
+ class HasIdMixin(object):
@declared_attr.cascading
def id(cls):
if has_inherited_table(cls):
+ return Column('id', Integer, primary_key=True)
+ else:
return Column('id',
Integer,
ForeignKey('person.id'), primary_key=True)
- else:
- return Column('id', Integer, primary_key=True)
- class Person(HasId, Base):
+ class Person(HasIdMixin, Base):
__tablename__ = 'person'
discriminator = Column('type', String(50))
__mapper_args__ = {'polymorphic_on': discriminator}
diff --git a/lib/sqlalchemy/ext/declarative/api.py b/lib/sqlalchemy/ext/declarative/api.py
index 1abd0467e..8a69bde46 100644
--- a/lib/sqlalchemy/ext/declarative/api.py
+++ b/lib/sqlalchemy/ext/declarative/api.py
@@ -196,19 +196,17 @@ class declared_attr(interfaces._MappedAttribute, property):
Below, both MyClass as well as MySubClass will have a distinct
``id`` Column object established::
- class HasSomeAttribute(object):
+ class HasIdMixin(object):
@declared_attr.cascading
- def some_id(cls):
+ def id(cls):
if has_inherited_table(cls):
- return Column(
- ForeignKey('myclass.id'), primary_key=True)
+ return Column('id', Integer, primary_key=True)
else:
- return Column(Integer, primary_key=True)
+ return Column('id', Integer, ForeignKey('myclass.id'),
+ primary_key=True)
- return Column('id', Integer, primary_key=True)
-
- class MyClass(HasSomeAttribute, Base):
- ""
+ class MyClass(HasIdMixin, Base):
+ __tablename__ = 'myclass'
# ...
class MySubClass(MyClass):