2010-05-04 12 views
0

我是一個蟒蛇新手,所以我提前道歉,如果這個問題之前已被問到。谷歌應用程序引擎db.Model在蟒蛇只顯示用戶定義的字段

我在GAE中構建了一個應用程序,需要生成一個包含用戶定義的字段子集值的報告。

例如,在我的數據庫模型,CrashReport,我有以下字段:

  • 條目類型
  • ENTRY_DATE
  • INSTANCE_ID
  • build_id
  • crash_text
  • machine_info

我向用戶提供上述列表作爲他們選擇的複選框組。無論用戶選擇哪個字段,我都會創建一個報告,顯示數據存儲中的所有值,但僅限於他們選擇的字段。例如,如果從上面的列表中,用戶選擇的build_id和crash_text字段,輸出可能看起來像這樣:

  build_id   crash_text
0.8.2            吹出墊圈
0.8。 2            爆胎
0.8.1            裂紋
...

因此問題是,究竟如何,我只訪問值,用戶定義的字段?

回答

2

給定一個模型實例mi和屬性名稱angetattr(mi, an)將爲對象mi獲取屬性an的價值。如果對象mi沒有該名稱的屬性,將會增加AttributeError;如果您想避免這種情況,請嘗試getattr(mi, an, None)

所以,如果你有屬性名la列表,

[getattr(mi, x, None) for x in la] 

給你的各種屬性,其名稱是la給定實例mi的值的列表。

如果你也有實例li的列表,並希望列表的列表(每個實例一個外部列表,每個與所有的屬性值),

[[getattr(mi, x, None) for x in la] for mi in li] 

等等。這些都是一般的Python概念和操作,它們適用於從數據存儲中獲取的模型實例,與其他任何其他Python對象一樣(不超過)。

相關問題