Is there a way with the current iteration of SQLAlchemy to add a column to the association table in a many-to-many relationship with that column used to order the join? I looked at the order_by attribute of the ManyToMany() relationship definition, but it seems that this is expecting a string naming the column in the related entity. I'm using Elixir on top of alchemy, but here are my relevant class and table definitions:
procedure_cpt_codes = Table('procedure_cpt_codes', metadata, autoload=True) class CptCode(Entity): using_options(tablename='cpt_codes', autosetup=True) name = Field(Unicode) code = Field(Unicode) description= Field(Unicode) class Procedure(Entity): using_options(tablename='procedures', autosetup=True) complications = OneToMany('Complication') cpt_codes = ManyToMany( 'CptCode', table = procedure_cpt_codes, lazy=False, foreign_keys = lambda: [ procedure_cpt_codes.c.procedure_id, procedure_cpt_codes.c.cpt_code_id ], primaryjoin = lambda: Procedure.id == procedure_cpt_codes.c.procedure_id, secondaryjoin = lambda: CptCode.id == procedure_cpt_codes.c.cpt_code_id, order_by = procedure_cpt_codes.c.cpt_codes_idx ) procedure_date = Field(Date) I get the following exception when run as listed: Traceback (most recent call last): File "/System/Library/Frameworks/Python.framework/Versions/Current/ Extras/lib/python/PyObjC/PyObjCTools/AppHelper.py", line 235, in runEventLoop main(argv) File "/Users/tswall/Documents/workspace/Cocoa/python/Epdb/build/ Debug/Epdb.app/Contents/Resources/MyController.py", line 15, in buttonPushed_ for instance in Patient.query.all(): File "/Library/Python/2.5/site-packages/Elixir-0.6.1-py2.5.egg/ elixir/entity.py", line 641, in __get__ elixir.setup_all() File "/Library/Python/2.5/site-packages/Elixir-0.6.1-py2.5.egg/ elixir/__init__.py", line 145, in setup_all File "/Library/Python/2.5/site-packages/Elixir-0.6.1-py2.5.egg/ elixir/entity.py", line 816, in setup_entities method() File "/Library/Python/2.5/site-packages/Elixir-0.6.1-py2.5.egg/ elixir/entity.py", line 421, in setup_properties self.call_builders('create_properties') File "/Library/Python/2.5/site-packages/Elixir-0.6.1-py2.5.egg/ elixir/entity.py", line 433, in call_builders getattr(builder, what)() File "/Library/Python/2.5/site-packages/Elixir-0.6.1-py2.5.egg/ elixir/relationships.py", line 417, in create_properties self.target._descriptor.translate_order_by(kwargs['order_by']) File "/Library/Python/2.5/site-packages/Elixir-0.6.1-py2.5.egg/ elixir/entity.py", line 322, in translate_order_by for colname in order_by: TypeError: 'Column' object is not iterable When I change the order_by above to order_by = 'procedure_cpt_codes.c.cpt_codes_idx' #or 'cpt_codes_idx' I get an error that it can't find column 'cpt_codes_idx' on relation table 'CptCode'. Any advice would be appreciated! Scott --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---