sqlalchemy自我引用关系,不包括\'self\'
|
我有一个简单的数据结构,其中电影表具有国家表的外键。
为了检索来自同一国家的所有电影,我具有此属性'same_country_films \',这是一种自指关系。
它几乎可以正确地完成工作,但是,它也将电影本身包括在列表中。如何排除其他电影?
非常感谢!
from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey
from sqlalchemy.orm import mapper, relationship
metadata = MetaData()
country_table = Table(\'country\', metadata,
Column(\'id\', String, primary_key=True),
Column(\'name\', String),
)
film_table = Table(\'film\', metadata,
Column(\'id\', Integer, primary_key=True),
Column(\'title\', String),
Column(\'year\', Integer),
Column(\'country_id\', Integer, ForeignKey(\'country.id\'))
)
class Country(object):
pass
class Film(object):
pass
mapper(Country, country_table)
mapper(Film, film_table,
properties={
\'country\':relationship(
Country,
backref=\'films\'),
\'same_country_films\':relationship(
Film,
primaryjoin=film_table.c.country_id==\\
film_table.c.country_id,
foreign_keys=[
film_table.c.country_id,
]
)
}
)
没有找到相关结果
已邀请:
2 个回复
锑寝粒
当在会话期间访问
和
时,此解决方案将不会对此属性进行单独查询。无法像平常使用关系那样更新该属性,但是我怀疑它是否确实需要。 不好的是它是针对每次访问进行评估的(工作量不大)。您可以将
装饰器更改为chaching一个(例如werkzeug中的ѭ5)),但是该属性在首次访问
后不会反映出更改。
久坡