sorry for having forgot to add a subject

2013/8/13 Paul Balomiri <paulbalom...@gmail.com>:
> Hi,
>
> I am trying to build an attribute_mapped_collection reference from
> table people (Mapped class is called Person). However, I would like to
> get a list of entities for each key.
>
> I have the following tables with the relevant PK and FK listed
> Person:
>   - id
>
> PersonToAddress:
> - id
> - person_id
> - address_id
>   role # this is the mapped special key
>
> Address:
> - id
>
> to establish a relationship i do the following (only the relationships
> are included in the listing)
> class PersonToAddress:
>     person = relationship( __table_to_classnames__['people'],
>
> backref=backref('people_to_addresses',
> collection_class=attribute_mapped_collection("role")))
>
> class Person:
>     addresses_by_role =
> association_proxy('people_to_addresses','address',creator = lambda
> k,v:PeopleToAddress(role=k,address=v))
>
> Now querying yields this result:
> p = Session.query(Person).get(id=1)
> print p.addresses_by_role
> {u'home': <Address object at 0x29568d0>, u'work': <Address object at 
> 0x2a3eb90>}
>
> I would like to get a list as value for the dict, such that i can
> assign more than one entity to any one key. The output should look
> like this:
> {u'home': [<Address object at 0x29568d0>,<Address object at ...>] ,
> u'work': [<Address object at 0x2a3eb90>]}
>
> Now in the database whenever i set a new value for a key(=role), the
> entry in PersonToAddress' table is replaced (not added). This is
> consistent with having a 1-key to 1-value mapping. Can I however
> change the behaviour in such a way that more than one Addresses are
> allowed for one Person using the same key(=role in this example)?
>
> I should note that i tried supplying the uselist=True parameter in the
> backref argument to PersonToAddress.person. This, however does
> nothing.
> Adding uselist=True to the parameters of the relationship (as opposed
> to the backref) does create a list in both the backref and
> addresses_by_role's values. The list, however only contains an
> element, and if a new one is added, the entry in the db is
> changed.Still only 1 element of the list is ever present in
> PersonToAddress' table.
>
> Am i overlooking something in the way attribute_mapped_collection
> should be used ?
>
> Paul
>
> --
> paulbalom...@gmail.com
>
> --
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/groups/opt_out.



-- 
paulbalom...@gmail.com

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to