On Feb 13, 2014, at 6:23 AM, Guido Winkelmann <[email protected]> wrote:
> Hi,
>
> Reading through the docs, I could not find out how to tell the cardinality of
> an object of type sqlalchemy.orm.properties.RelationshipProperty, i.e.
> whether it is one-to-many, many-to-one or many-to-many. Mostly, I just need
> to know whether a relationship refers to just one object or a collection of
> objects.
>
> Can someone help me with that?
So given a class:
MyClass
and a relationship at the class level:
MyClass.some_relationship
you get at the RelationshipProperty like this:
MyClass.some_relationship.property
it then has:
1. the “uselist” flag, which is likely the most direct way for you to see
“collection” or not:
MyClass.some_relationship.property.uselist
2. the “direction”, which is MANYTOMANY, ONETOMANY, MANYTOONE:
from sqlalchemy.orm import interfaces
MyClass.some_relationship.property.direction is interfaces.MANYTOONE
MyClass.some_relationship.property.direction is interfaces.ONETOMANY
MyClass.some_relationship.property.direction is interfaces.MANYTOMANY
these flags will be available as of when the “configure_mappers()” step has
been called, which is usually automatic. If you are calling these attributes
immediately after declaring the classes, they might not yet be available in
which case the configure_mappers() call will force that to happen.
signature.asc
Description: Message signed with OpenPGP using GPGMail
