Как получить свойство из класса ReferenceProperty при загрузке данных App Engine с помощью массового загрузчика?

Я хочу загрузить свои данные 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

e.g.

   dept     secret    key
1184017  mySecret  myKey

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

e.g.

   dept     secret    key
myDept  mySecret  myKey

спасибо Пол


person Paul Carvill    schedule 21.12.2010    source источник


Ответы (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

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

person mmohab    schedule 21.12.2010