J'ai une structure de données simple, où une table de film a une clé étrangère à la table de pays.sqlalchemy relation auto-référentielle n'incluant pas 'self'
Pour récupérer tous les films d'un même pays, j'ai cette propriété 'same_country_films', une relation auto-référentielle.
Il fait presque le travail correctement, mais il inclut également le film lui-même dans la liste. Comment puis-je exclure il et juste avoir autres films?
Merci beaucoup!
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,
]
)
}
)
Pas tout à fait. Il ne remplace pas le film_table.c.id par? dans le sql généré. – Xuan