python - 在 Pyramids/Python/SQLAlchemy 中引用相关对象

标签 python sqlalchemy pyramid chameleon template-tal

我不知道如何标题这个问题。我还简化了我的代码,以便更容易提问。假设我在 Pyramid 的 myproject.models 中有以下代码:

class Links(Base):
    __tablename__ = 'links'
    id = Column(Integer, primary_key=True)
    link = Column(Text)

    def __init__(self, link):
        self.link = link

class Submissions(Base):
    __tablename__ = 'submissions'
    id = Column(Integer, primary_key=True)
    title = Column(Text)
    link_id = Column(Integer, ForeignKey('links.id'))
    link = relationship(Links)

    def __init__(self, title, link):  
    self.title = title
        self.link = link

View 将非常简单:

def my_view(request):
    dbsession = DBSession()
    submissions = dbsession.query(Submissions)
    return {'submissions':submissions}

我想使用 Chameleon 在我的页面上返回此内容:

<p tal:repeat="thing submissions">
    ${thing.title} ${thing.link}
</p>

但是,${thing.link} 不显示该网站的链接。

问题:

  1. 如何引用 thing.link 的链接?直觉上,我会输入 ${thing.link.link},但这不起作用。
  2. 如何引用任意子类?我希望能够从对象的子类中提取任何属性,例如 thing.link.link、thing.link.domain、thing.link.created 等。

顺便说一句,有人请告诉我一个更好的标题来提出这个问题。

最佳答案

在您的示例中,您在 .query() 之后缺少 .all()。您可以通过执行类似的操作来检查您的 View 是否确实加载了您的提交内容

for submission in submissions:
    print submission.id, submission.title

然后在加载页面时观察控制台。

然后,当您确认确实已加载它们时,您可以使用 submission.link 访问链接对象。在链接对象中,您可以使用 .link 访问链接属性。

for submission in submissions:
    print submission.link.link

因此,在模板中,您可以编写 ${thing.link.link}

关于python - 在 Pyramids/Python/SQLAlchemy 中引用相关对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7507108/

相关文章:

python - 动态向类添加方法

python - 当 MongoDB 用作数据库时使用哪个 python web 框架(django 或 django-norel 或 Pyramid )

casting - Sqlalchemy 查询返回 Decimal 对象

inheritance - 在 sqlalchemy 中使用版本控制和多级继承时遇到问题

python - 您知道有关如何设置具有多个应用程序的 Pyramid 项目的任何资源吗?

python - Pyramid :永远不会调用 config.set_request_property 回调

python - 为什么在 python 中使用 dual __init__?

python - SQLAlchemy 2.0 NotImplementedError : engine. 执行

Python Gensim : how to calculate document similarity using the LDA model?

python - Sqlalchemy:FROM 中的子查询必须有一个别名