On Sep 9, 2007, at 7:00 PM, Dan Eloff wrote:

>
> Hi All,
>
> Table Categories:
>
> categories_table = sa.Table('categories', connection.metadata)
> [categories_table.append_column(c) for c in (
>     sa.Column('id', sa.Integer, primary_key=True),
>     sa.Column('name', sa.String(40)),
>     sa.Column('flags', sa.SmallInteger),
>     sa.Column('parent_id', sa.Integer, sa.ForeignKey 
> ('categories.id')))]
>
> sa.orm.mapper(Category, categories_table, properties={
>     'subcategories' : sa.orm.relation(Category,
> backref=sa.orm.backref('_parent',
> remote_side=[categories_table.c.id])),
>     })
>
> c = Category()
> c.subcategories.append(Category()) # works great
> c._parent.append(Category()) # fails, c._parent is NoneType???
>
> Why isn't _parent a list? This is actually a one-to-many so there is
> only one parent, but assigning doesn't work either:

the relation from Category to _parent is many-to-one, so its a scalar  
in that direction (a one-to-many is always many-to-one in the reverse  
direction, and vice versa)

>
> c._parent = Category()
>
> Traceback (most recent call last):
>   File "C:\Program
> Files\Python\lib\site-packages\sqlalchemy-0.4.0beta5-py2.5.egg 
> \sqlalchemy\orm\attributes.py",
> line 76, in __set__
>   File "C:\Program
> Files\Python\lib\site-packages\sqlalchemy-0.4.0beta5-py2.5.egg 
> \sqlalchemy\orm\attributes.py",
> line 364, in set
>   File "C:\Program
> Files\Python\lib\site-packages\sqlalchemy-0.4.0beta5-py2.5.egg 
> \sqlalchemy\orm\attributes.py",
> line 300, in fire_replace_event
>   File "C:\Program
> Files\Python\lib\site-packages\sqlalchemy-0.4.0beta5-py2.5.egg 
> \sqlalchemy\orm\attributes.py",
> line 130, in sethasparent
> AttributeError: 'list' object has no attribute '_state'

I cant reproduce this, although the error to me seems like you are  
actually saying c._parent = [] (some list object).  If thats not it,  
send along a reproducing test script.

>
> I want to be able to create the tree of Category() objects from the
> top down and set relations via _parent, but how can I do this?

just the way you are doing it, c._parent = Category().  works for me  
on this end...



--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to