Я могу придумать несколько способов (создание подкласса db.Model и переопределение свойств, в которых хранится ключ, создание собственного класса свойств для переопределения default_value), но они заставляют меня чувствовать себя грязно и страдать от нескольких побочных эффектов.
Если бы у меня действительно было использование для чего-то подобного (и я действительно не могу думать об этом), я бы сделал специальный метод create
для моей Модели и использовал бы его для предварительного выделенияидентификаторы до создания .
class BadModel(db.Model):
my_id = db.IntegerProperty()
@classmethod
def create(model, **kwargs):
id = db.allocate_ids(db.Key.from_path(model.kind(), 1),1)[0]
kwargs['key'] = db.Key.from_path(model.kind(), id)
kwargs['my_id'] = id
return model(**kwargs)
>> e = BadModel.create()
>> e.my_id
2039