【发布时间】:2011-04-14 16:54:10
【问题描述】:
我有一个简单的数据结构,其中一个电影表有一个国家表的外键。
为了检索来自同一个国家的所有电影,我有这个属性'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,
]
)
}
)
【问题讨论】:
标签: python sqlalchemy