A regular mapper select on a single table can order by a relationship to a second table
(self)
| 507 | ) |
| 508 | |
| 509 | def test_orderby_related(self): |
| 510 | """A regular mapper select on a single table can |
| 511 | order by a relationship to a second table""" |
| 512 | |
| 513 | Address, addresses, users, User = ( |
| 514 | self.classes.Address, |
| 515 | self.tables.addresses, |
| 516 | self.tables.users, |
| 517 | self.classes.User, |
| 518 | ) |
| 519 | |
| 520 | self.mapper_registry.map_imperatively(Address, addresses) |
| 521 | self.mapper_registry.map_imperatively( |
| 522 | User, |
| 523 | users, |
| 524 | properties=dict( |
| 525 | addresses=relationship( |
| 526 | Address, lazy="selectin", order_by=addresses.c.id |
| 527 | ) |
| 528 | ), |
| 529 | ) |
| 530 | |
| 531 | q = fixture_session().query(User) |
| 532 | result = ( |
| 533 | q.filter(User.id == Address.user_id) |
| 534 | .order_by(Address.email_address) |
| 535 | .all() |
| 536 | ) |
| 537 | |
| 538 | eq_( |
| 539 | [ |
| 540 | User( |
| 541 | id=8, |
| 542 | addresses=[ |
| 543 | Address(id=2, email_address="ed@wood.com"), |
| 544 | Address(id=3, email_address="ed@bettyboop.com"), |
| 545 | Address(id=4, email_address="ed@lala.com"), |
| 546 | ], |
| 547 | ), |
| 548 | User(id=9, addresses=[Address(id=5)]), |
| 549 | User(id=7, addresses=[Address(id=1)]), |
| 550 | ], |
| 551 | result, |
| 552 | ) |
| 553 | |
| 554 | def test_orderby_desc(self): |
| 555 | Address, addresses, users, User = ( |
nothing calls this directly
no test coverage detected