Работала с GAE в течение нескольких месяцев. Это моя первая работа с отношениями «один-ко-многим». Все было хорошо размещено в хранилище данных, пока я не начал с отношений. Это первый. Может кто-нибудь, пожалуйста, помогите мне с этим «сообщением» в хранилище данных? Документы и другие примеры довольно запутанны. Я знаю, что делаю это неправильно. employees=r['Employees'],
Я просто хочу простой пост. Если бы вы могли сделать это еще лучше! Я получаю BadValueError при публикации, как показано;GAE размещение массива в хранилище данных с помощью Python (один для многих)
model.py
class Project(ndb.Model):
projectID = ndb.IntegerProperty(required=True)
title = ndb.StringProperty(required=True)
description = ndb.StringProperty(required=True)
startAt = ndb.DateTimeProperty(indexed=True)
endAt = ndb.DateTimeProperty()
employees = ndb.KeyProperty(kind='Employees', repeated=True)
class Employees(ndb.Model):
name = ndb.StringProperty()
role = ndb.StringProperty()
handlers.py
def post(self):
r = json.loads(self.request.body)
print str(r)
g = Project(projectID=int(r['ProjectID']),
description=r['Description'],
title=r['Title'],
employees=r['Employees'],
startAt=datetime.strptime(r['StartAt'], '%d/%m/%Y %H:%M %p'),
endAt=datetime.strptime(r['EndAt'], '%d/%m/%Y %H:%M %p'))
project_key = g.put()
project_key.get()
print project_key
controller.js
$scope.employees = [
{
name:'mark',
role: 'dev'
},
{
name:'colin',
role: 'dev2'
},
];
ОБНОВЛЕНИЕ ------------------------------------------- ---------------------------
обработчик JSON
class commentsJsonHandler(webapp2.RequestHandler):
@classmethod
def route(cls):
"""
name: index, template:/
"""
return webapp2.Route('/comments', handler=cls, name='_commments_')
def get(self):
recommendations = Project.query()
def date_handler(obj):
if isinstance(obj, datetime):
return obj.isoformat()
else:
raise TypeError
self.response.out.write(json.dumps([dict(rec.to_dict(), **dict(id=rec.key.id())) for rec in recommendations], default=date_handler))
Определенно хочу скопировать вам новые сущности сотрудника в списке, а затем выполнить ndb.put_multi() после цикла. Никогда не делайте отдельные put() s в петле, если вы хотите быстрое время отклика. (** никогда не говори никогда) – stevep
@stevep спасибо за дополнительную информацию. Ну, решила @gipsy. Итак, теперь у моего обработчика json возникают проблемы с удалением ключей с помощью json.dumps(), когда я 'self.response.out.write (json.dumps ([rec.to_dict() для rec в рекомендациях], default = date_handler))'. Из 'Project.query()' находится где «рекомендации» идут. Создается 'TypeError'. –
Я добавил обработчик json к вопросу. После редактирования кода, чтобы читать 'key', он перестает распознавать datetimeobjects –