#python #google-app-engine #bulkloader
#python #google-app-engine #bulkloader
Вопрос:
Пытаюсь использовать класс геомодели python и bulkloader. Я вызываю следующее post_import_function
, которое работает нормально, и объект обновляется с правильно установленным полем местоположения.
def post_process_obj(input_dict, entity_instance, bulkload_state):
entity_instance['location'] = db.GeoPt(entity_instance['latitude'], entity_instance['longitude'])
return entity_instance
Но что мне нужно сделать, это вызвать entity_instance.update_location()
объект перед его сохранением в хранилище данных. entity_instance
Though — это объект, а не подкласс GeoModel, поэтому я не понимаю, как это сделать. Некоторое время назад было сообщение, в котором говорилось встроить код или вызвать функцию и передать ему объект, но я не знаю, что это должно было означать.
Спасибо за любую помощь / пример кода.
Ответ №1:
Вы не можете этого сделать — как вы заметили, вы имеете дело с Entity
, а не с экземпляром вашей модели. Единственный вариант — взять код, который вы хотите выполнить, скопировать и вставить его, и изменить его для работы с объектом вместо этого.
Комментарии:
1. Спасибо, Ник — я в значительной степени обнаружил, что, хотя я нашел сообщение от Мэтью Блейна, в котором говорится, что вы можете использовать model вместо «kind» в bulkloader. yaml, хотя на самом деле я не нашел никакой документации. В любом случае я исправил свою проблему, отказавшись от использования GeoHash и портирования для использования geobox.py вместо этого, который, кажется, довольно хорошо решает мои требования к geoquery.