2015-10-05 3 views
0

Если у меня есть модель с ПК, позволяет сказать device_id (так что это не id), который я связать в другой таблице:Получить произвольный ПК из БД модели

x = db.Column(db.Integer, db.ForeignKey('device.device_id'))

Как я могу ссылаться на этот столбец в SQLAlchemy запрос?

В Django я мог бы использовать Device.pk, и он разрешил бы PK. Возможно ли это в колбе с sqlalchemy?

+0

Вот [ответ] (http://stackoverflow.com/a/32200462/1377864). –

+0

Что значит «как вы можете это сделать?» Вот оно, это называется 'x'. Пожалуйста, [править], чтобы включить [mcve], демонстрируя то, что вы пытаетесь выполнить. – davidism

ответ

0

Вы можете либо присоединиться к нему, либо использовать связь для SQLAlchemy, чтобы автоматически работать с ней.

Похоже, вы говорите про многие к одному отношения, так, using the documentation example:

class Person(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.String(50)) 
    addresses = db.relationship('Address', backref='person', 
           lazy='dynamic') 

class Address(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    email = db.Column(db.String(50)) 
    person_id = db.Column(db.Integer, db.ForeignKey('person.id')) 

Если ПК был назван по-другому на человека, вы бы просто настроить ForeignKey, чтобы соответствовать:

class Person(db.Model): 
    toot = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.String(50)) 
    addresses = db.relationship('Address', backref='person', 
           lazy='dynamic') 

class Address(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    email = db.Column(db.String(50)) 
    person_id = db.Column(db.Integer, db.ForeignKey('person.toot')) 

Если бы я тогда хотел, чтобы узнать все Person объекты, которые имеют электронный адрес [email protected] я мог бы просто сказать:

Person.query.join(Address).filter(Address.email='[email protected]').all() 
Смежные вопросы