2012-04-30 12 views
3

Web2pyに新しくなったので、私の質問はあまり明確ではないかもしれません。私は貨物追跡ページを作成しようとしています。追跡番号と荷送人IDを持つ簡単なデータベースがあります。例の後に、私のアプリケーションは出荷記録データベースに新しいレコードを表示して追加することができます。今度は、表示されたレコードにリンクを追加して、そのトラッキング番号のキャリアのトラッキングページに移動します。追跡ページのURLは、追跡番号が追加される各荷送人のデフォルト文字列から作成されます。どのようにして結果を適切なトラッキングページへのリンクにすることができますか?SQLTABLEの結果を外部ページにリンクさせるにはどうすればよいですか?

答えて

2

あなたはSQLFORM、CRUD、SQLTABLE、またはSQLFORM.gridを経由して、レコードを表示している場合は、リンクを表示するために追跡番号フィールドの属性「を表す」を設定できます

db.define_table('shipper', 
    Field('name'), 
    Field('url'), 
    format='%(name)s') 

db.define_table('shipment', 
    Field('tracking_number', represent=lambda value, row: A(value, 
     _href=row.shipper.url + value)), 
    Field('shipper', db.shipper)) 

これはあなたを想定しています荷送人のURLを別の表に保管しています。

+0

郵送物を追加しようとするとこのエラーが発生します。AttributeError: 'NoneType'オブジェクトに 'url'属性がありません – user1011625

+0

提案をいただきありがとうございます!私はそれを微調整し、[Web2pyユーザグループ](https://groups.google.com/forum/?fromgroups#!topic/web2py/Z1Zng7WmECE)の人々の助けを借りて動作させることができました。最終版については以下の答えを確認してください。 – user1011625

+0

OK、修正しました。 – Anthony

1

私はこれにそれを変更し、それはほとんど動作します:

db.define_table('carrier', 
    Field('name',), 
    Field('url',), 
    format='%(name)s') 

db.define_table('shipment', 
    Field('shipment_id', represent=lambda value,row: \ 
     A(value, _href=(row.carrier.url + value,))), 
    Field('carrier', db.carrier)) 

shipment_idは、リンクであるが、それは「http://127.0.0.1:8000/tracker/default/www.bingを指します。 com/search?q = trumpet '、ここで、' www.bing.com/search?q= 'と' trumpet 'は(テストのための)それぞれcarrier.urlとshipment.shipment_idの値です。どうすれば 'http://127.0.0.1:8000/tracker/default/'から離れることができますか?二つの問題がありました

db.define_table('carrier', 
    Field('name',), 
    Field('url',), 
    format='%(name)s') 

db.define_table('shipment', 
    Field('shipment_id', represent=lambda value,row: \ 
     A(value, _href=row.carrier.url + value)), 
    Field('carrier', db.carrier)) 

0

[OK]を、になってしまいました。最初にhrefの構文がありました。私が上に追加した答えのバージョンはエラーを出さなかったが、リンクアドレスの問題を引き起こした。次に、「http://」なしでURLが入力されました。これにより、同じリンクアドレスの問題が発生しました。

関連する問題