summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm/dynamic.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/orm/dynamic.py')
-rw-r--r--lib/sqlalchemy/orm/dynamic.py19
1 files changed, 15 insertions, 4 deletions
diff --git a/lib/sqlalchemy/orm/dynamic.py b/lib/sqlalchemy/orm/dynamic.py
index 2a3ef54dd..adc976e32 100644
--- a/lib/sqlalchemy/orm/dynamic.py
+++ b/lib/sqlalchemy/orm/dynamic.py
@@ -279,10 +279,21 @@ class AppenderMixin(object):
# doesn't fail, and secondary is then in _from_obj[1].
self._from_obj = (prop.mapper.selectable, prop.secondary)
- self._criterion = prop._with_parent(instance, alias_secondary=False)
+ self._where_criteria += (
+ prop._with_parent(instance, alias_secondary=False),
+ )
if self.attr.order_by:
- self._order_by = self.attr.order_by
+
+ if (
+ self._order_by_clauses is False
+ or self._order_by_clauses is None
+ ):
+ self._order_by_clauses = tuple(self.attr.order_by)
+ else:
+ self._order_by_clauses = self._order_by_clauses + tuple(
+ self.attr.order_by
+ )
def session(self):
sess = object_session(self.instance)
@@ -354,9 +365,9 @@ class AppenderMixin(object):
else:
query = sess.query(self.attr.target_mapper)
- query._criterion = self._criterion
+ query._where_criteria = self._where_criteria
query._from_obj = self._from_obj
- query._order_by = self._order_by
+ query._order_by_clauses = self._order_by_clauses
return query