Как получить свойство из класса ReferenceProperty при загрузке данных App Engine с помощью массового загрузчика? - PullRequest
1 голос
/ 21 декабря 2010

Я хочу загрузить данные своего App Engine, чтобы я мог эффективно работать с ними локально (на этой основе я создаю несколько PDF-файлов). Как определить, что столбец для 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)

Однако, хотя я описал property_map в bulkloader.yaml так:

- 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

Как определить, что столбец dept заполняется свойством name в модели Department?

, например

   dept     secret    key
myDept  mySecret  myKey

спасибо, Пол

1 Ответ

1 голос
/ 22 декабря 2010

Создайте файл uploadutil.py и добавьте в него этот метод:

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

Затем добавьте это в bulkloader.yaml:

Добавить импорт для загрузки:

import: uploadutil

И добавить свойство:

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

следовательно вышеупомянутый метод вызывается при экспорте!

...