i have a problem with filtering by related problem - i want to find
estates that translated title is "warehouse"
here are the models:
from estate.model import meta
from sqlalchemy import Table, Column, Integer, String, ForeignKey,
Unicode
from sqlalchemy.orm import mapper, relation, backref
construction_table = Table('w_construction', meta.metadata,
Column('id', Integer, primary_key=True),
)
warehouse_table = Table('w_warehouse', meta.metadata,
Column('id', Integer, primary_key=True),
Column('construction_id', Integer,
ForeignKey(construction_table.c.id)),
)
language_table = Table('language', meta.metadata,
Column('code', String(5), primary_key=True),
Column('name', Unicode(20)),
)
currency_table = Table('currency', meta.metadata,
Column('code', String(5), primary_key=True),
Column('name', Unicode(20)),
)
constuction_translation_table = Table('w_construction_translation',
meta.metadata,
Column('id', Integer, primary_key=True),
Column('construction_id', Integer,
ForeignKey(construction_table.c.id)),
Column('language_id',
String(5),ForeignKey(language_table.c.code)),
Column('title', Unicode(512)),
)
translation_table = Table('w_translation', meta.metadata,
Column('id', Integer, primary_key=True),
Column('warehouse_id', Integer,
ForeignKey(warehouse_table.c.id)),
Column('language_id',
String(5),ForeignKey(language_table.c.code)),
Column('title', Unicode(512)),
)
price_table = Table('w_price', meta.metadata,
Column('id', Integer, primary_key=True),
Column('currency_id',
String(5),ForeignKey(currency_table.c.code)),
Column('warehouse_id', Integer,
ForeignKey(warehouse_table.c.id)),
Column('total', Integer),
)
class Warehouse(object):
def __init__(self,id,construction_id):
self.id = id
self.construction_id = construction_id
def __repr__(self):
return "%s" % self.id
class WarehouseTranslation(object):
def __init__(self,id,warehouse_id,language_id,title):
self.id = id
self.warehouse_id = warehouse_id
self.language_id = language_id
self.title = title
class Language(object):
def __init__(self,code,name):
self.code = code
self.name = name
mapper(Warehouse, warehouse_table)
mapper(Language,language_table)
mapper(WarehouseTranslation,translation_table,properties = {
'warehouse': relation(Warehouse,
lazy = False, #1 note lazy here, it means that we
# will use lazy loading (more
details in the docs
backref = backref('translations',lazy = False)),
'language': relation(Language,
uselist = False,#2 note uselist, it means
#we use one-to-one instead of
one-to-many
lazy = False),
},
primary_key = [translation_table.c.warehouse_id,
translation_table.c.language_id]
#explicit primary key is needed when SQLA can not assemble the one
foryou automatically
);
here is the code i'm trying to do:
list = meta.Session.query(model.Warehouse)\
.filter( model.Warehouse.translations.title.like(u'magazyn
%')).all()
(there is an error : AttributeError: 'InstrumentedAttribute' object
has no attribute 'title')
any tips?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---