向blogr模型添加关系的示例

2024-03-28 21:58:20 发布

您现在位置:Python中文网/ 问答频道 /正文

http://pyramid-blogr.readthedocs.org/en/latest/完成教程,并希望在用户和条目模型之间添加关系,然后能够在添加新文章时填充FK字段。你知道吗

这是我到目前为止得到的。。。你知道吗

入口.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'))
...

用户.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")

...

我猜表单.py还需要修改以将用户标识作为隐藏字段传递,但我可能没有正确考虑这一点。你知道吗


Tags: 用户pyidfalsetruedefaultdatetimeunicode
1条回答
网友
1楼 · 发布于 2024-03-28 21:58:20

布莱恩

当您声明一个类似“entries”的关系时(就像您在代码片段中所做的那样)

然后定义外键,您可以执行以下操作:

user.entries.append(entry)

您的外键将被自动填充,新创建的对象将被添加到会话中-您不想将用户id作为表单参数传递给您的模型-这将是不安全的操作,因为一个用户可以将条目保存给其他人。你知道吗

http://docs.sqlalchemy.org/en/rel_1_0/orm/basic_relationships.html?highlight=append#one-to-many

下面是sqlalchemy文档的一节来说明它。你知道吗

相关问题 更多 >