2016-01-23 3 views
1

Я немного запутался в использовании двух модулей из SQLAlchemy. Это код, у меня есть:Использование отношений и модулей ForeignKey в SQLAlchemy

Base = declarative_base() 

class Restaurant(Base): 
    __tablename__ = 'restaurant' 
    id = Column(Integer, primary_key=True) 
    name = Column(String(250), nullable=False) 

class MenuItem(Base): 
    __tablename__ = 'menu_item' 
    name =Column(String(80), nullable = False) 
    id = Column(Integer, primary_key = True) 
    description = Column(String(250)) 
    price = Column(String(8)) 
    course = Column(String(250)) 
    restaurant_id = Column(Integer,ForeignKey('restaurant.id')) 
    restaurant = relationship(Restaurant) 

Я понимаю, что ForeignKey используется для определения внешнего ключа между restaurant_id колонком menu_item таблицы и столбцом идентификаторов ресторана таблицы. Но почему тогда используется ресторан = отношения (ресторан)?

ответ

1

restaurant_id будет ссылаться на идентификатор (значение столбца). restaurant будет ссылаться на экземпляр Restaurant, который будет лениво загружен из db на доступ (или будет загружен, если вы настроите правильные вещи раньше). Если вы установили backref на relationship, вы также можете получить доступ к списку MenuItem объектов из Restaurant.

Смежные вопросы