2010-12-21 18 views
1

我想下載我的App Engine數據,這樣我就可以在本地有效地操作它(我正在生成一些基於它的PDF)。 如何定義ReferenceProperty的列由引用模型的特定屬性填充,而不僅僅是密鑰或ID?如何使用bulkloader下載App Engine數據時從ReferenceProperty類中獲取屬性?

這裏是我的模型類:

 
class Department(db.Model): 
    name = db.StringProperty() 

class User(db.Model): 
    userKey = db.StringProperty(required=True) 
    secret = db.StringProperty() 
    dept = db.ReferenceProperty(Department, required=True) 

然而,即使我已經在bulkloader.yaml描述的property_map像這樣:

 
- kind: User 
    connector: csv 
    connector_options: 
    property_map: 
    - property: __key__ 
     external_name: key 
     export_transform: transform.key_id_or_name_as_string 

    - property: dept 
     external_name: dept 
     import_transform: transform.create_foreign_key('Department') 
     export_transform: transform.key_id_or_name_as_string 

    - property: secret 
     external_name: secret 

    - property: userKey 
     external_name: userKey 

我總是在關鍵處結束CSV

例如

 
    dept  secret key 
1184017 mySecret myKey 

如何定義部門模型的'name'屬性填充了部門列?

例如

 
    dept  secret key 
myDept mySecret myKey 

感謝, 保羅

回答

1

創建一個文件uploadutil.py並在其中加入這個方法:

def prop_converter(dept): 
    # load the department then return the property you want 
    return dept.name 

然後在bulkloader.yaml補充一點:

添加爲進口uploadutil:

import: uploadutil 

並添加屬性:

- property: dept 
    external_name: dept 
    import_transform: transform.create_foreign_key('Department') 
    export_transform: uploadutil.prop_converter 

因此上述方法被調用的出口!

相關問題