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
-~----------~----~----~----~------~----~------~--~---

Reply via email to