向 pyramid_blogr 个模型添加关系的示例
Example of adding relationship to pyramid_blogr models
正在学习 http://pyramid-blogr.readthedocs.org/en/latest/ 中的教程,并希望在用户模型和入口模型之间添加关系,然后能够在添加新的 post 时填充该 FK 字段。
这是我目前所知道的...
entry.py
...
class Entry(Base):
__tablename__ = 'entries'
id = Column(Integer, primary_key=True)
title = Column(Unicode(255), unique=True, nullable=False)
body = Column(UnicodeText, default=u'')
created = Column(DateTime, default=datetime.datetime.utcnow)
edited = Column(DateTime, default=datetime.datetime.utcnow)
user_id = Column(Integer, ForeignKey('users.id'))
user = relationship("User", backref=backref('entries'))
...
user.py
...
class User(Base):
__tablename__ = 'users'
id = Column(Integer, Sequence('user_id_seq'), primary_key=True)
name = Column(Unicode(255), unique=True, nullable=False)
password = Column(Unicode(255), nullable=False)
last_logged = Column(DateTime, default=datetime.datetime.utcnow)
entries = relationship("Entry", order_by="entry.id", backref="user_id")
...
我假设 forms.py 也需要修改以将 user_id 作为隐藏字段传递,但我可能没有正确考虑。
布莱恩,
当您声明 "entries" 这样的关系时(就像您在代码片段中所做的那样)
并定义一个外键,你可以这样做:
user.entries.append(entry)
并且您的外键将被自动填充并且您新创建的对象将被添加到会话中 - 您不想将 user_id 作为表单参数传递给您的模型 - 作为一个用户这将是不安全的操作可以为其他人保存条目。
http://docs.sqlalchemy.org/en/rel_1_0/orm/basic_relationships.html?highlight=append#one-to-many
这是说明它的 sqlalchemy 文档部分。
正在学习 http://pyramid-blogr.readthedocs.org/en/latest/ 中的教程,并希望在用户模型和入口模型之间添加关系,然后能够在添加新的 post 时填充该 FK 字段。
这是我目前所知道的...
entry.py
...
class Entry(Base):
__tablename__ = 'entries'
id = Column(Integer, primary_key=True)
title = Column(Unicode(255), unique=True, nullable=False)
body = Column(UnicodeText, default=u'')
created = Column(DateTime, default=datetime.datetime.utcnow)
edited = Column(DateTime, default=datetime.datetime.utcnow)
user_id = Column(Integer, ForeignKey('users.id'))
user = relationship("User", backref=backref('entries'))
...
user.py
...
class User(Base):
__tablename__ = 'users'
id = Column(Integer, Sequence('user_id_seq'), primary_key=True)
name = Column(Unicode(255), unique=True, nullable=False)
password = Column(Unicode(255), nullable=False)
last_logged = Column(DateTime, default=datetime.datetime.utcnow)
entries = relationship("Entry", order_by="entry.id", backref="user_id")
...
我假设 forms.py 也需要修改以将 user_id 作为隐藏字段传递,但我可能没有正确考虑。
布莱恩,
当您声明 "entries" 这样的关系时(就像您在代码片段中所做的那样)
并定义一个外键,你可以这样做:
user.entries.append(entry)
并且您的外键将被自动填充并且您新创建的对象将被添加到会话中 - 您不想将 user_id 作为表单参数传递给您的模型 - 作为一个用户这将是不安全的操作可以为其他人保存条目。
http://docs.sqlalchemy.org/en/rel_1_0/orm/basic_relationships.html?highlight=append#one-to-many
这是说明它的 sqlalchemy 文档部分。