1

Pythonのsqlalchemyを使用してデータベースからデータセットをフェッチしています:

links = session.query(Link).order_by(Link.id.desc()).limit(20)

次にlinks、ビューで結果を繰り返し処理します。

%for link in links:
    <div class="link">
        {{link.url}}
        %if link.pdf: 
            <a href="{{link.pdf}}">[pdf]</a>
        %end
    </div>
%end

結果のPDFファイルが存在する場合はlink、の外部属性を読み取りたい。pdf

私はもう試した :

for index, link in enumerate(links):
    if os.path.isfile('/pdf/'+str(link.id)+'.pdf'):
        links[index].pdf = '/pdf/'+str(link.id)+'.pdf'
    else:
        links[index].pdf = None

しかし、pdf属性は明らかに設定されていません。

私は何を間違っているのですか?

4

2 に答える 2

1

Pythonプロパティを追加すると、おそらくその仕事をするはずです。

class Link(Base):
    ...

    @property
    def pdf(self):
        path = '/pdf/%d.pdf' % self.id
        if os.path.isfile(path):
            return path
于 2013-03-05T13:58:48.383 に答える
0

通常、必要な情報を使用してマッピングのリストを作成します。

linkinfo = []
for link in links:
    pdf = '/pdf/'+str(link.id)+'.pdf'
    pdf = pdf if os.path.isfile(pdf) else None
    linkinfo.append({'url': link.url, 'pdf': pdf})

linkinfo次に、代わりにテンプレートのリストをループします。

これにより、SQLAlchemyオブジェクトに煩わされる必要がなくなり、テンプレートに表示用の適切なデータがすべて渡されるようになります。

于 2013-03-05T11:34:15.060 に答える