--- Revision None +++ Revision 373135353430 @@ -0,0 +1,66 @@ +########### Regular SQLAlchemy works correctly +from sqlalchemy import * +from sqlalchemy.orm import * +from sqlalchemy.ext.declarative import declarative_base + +Model = declarative_base("sqlite://") + +class Parent(Model): + __tablename__ = 'parents' + id = Column(Integer, primary_key=True) + +class Child(Model): + __tablename__ = 'children' + id = Column(Integer, primary_key=True) + parent_id = Column(Integer, ForeignKey('parents.id')) + parent = relationship(Parent, backref=backref('children', order_by=id.desc())) + + def __repr__(self): + return "" % self.id + +Model.metadata.create_all() +parent = Parent() +child1 = Child(parent=parent) +child2 = Child(parent=parent) + +session = sessionmaker()() +session.add(parent) +session.add(child1) +session.add(child2) +session.commit() +for child in parent.children: + print child.id +# prints 2,1 like it's supposed to + +########### Flask Extension screws up the ordering +from flask import Flask +from flaskext.sqlalchemy import SQLAlchemy + +app = Flask(__name__) +db = SQLAlchemy(app) + +class Parent(db.Model): + __tablename__ = 'parents' + id = db.Column(db.Integer, primary_key=True) + +class Child(db.Model): + __tablename__ = 'children' + id = db.Column(db.Integer, primary_key=True) + parent_id = db.Column(db.Integer, db.ForeignKey('parents.id')) + parent = db.relationship(Parent, backref=db.backref('children', order_by=id.desc())) + + def __repr__(self): + return "" % self.id + +db.create_all() +parent = Parent() +child1 = Child(parent=parent) +child2 = Child(parent=parent) + +db.session.add(parent) +db.session.add(child1) +db.session.add(child2) +db.session.commit() +for child in parent.children: + print child.id +# Prints 1,2 despite my order_by=id.desc() in this relationship