Как использовать ListProperty (элементы в списке номеров должны быть экземплярами Key) - PullRequest
1 голос
/ 22 марта 2012

Первая модель

    class A(db.Model):
      number = db.IntgerProperty()

Вторая модель

class B(db.Model):
   name = db.StringProperty()
   numbers = db.ListProperty(db.Key)

A Модель успешно сохранена.

a = A()
a.number = 90
a.put()

BadValueError: Элементы в списке номеров должны быть всеbe Ключевые случаи

b = B()
b.name = 'test'
b.numbers = [90]
b.put()

Не могли бы вы помочь?Большое спасибо.

Ответы [ 2 ]

3 голосов
/ 22 марта 2012

Редактировать (на основе OP-комментария): если вы хотите вставить db.Key, вам необходимо предоставить его.
Вызов put() возвращает ключ, так что вы можете использовать его, например:

a = A()
the_key = a.put()

b = B()
b.name = 'test'
b.numbers = [the_key]
b.put()

Старый ответ до уточнения OP:

С db.ListProperty(db.Key) вы говорите, что хотите список db.Key экземпляров.
Если вы хотите целые числа, объявите вашу моделькак это:

class B(db.Model):
   name = db.StringProperty()
   numbers = db.ListProperty(int)
                             ^^^ 
0 голосов
/ 23 марта 2012

a:

a = A()
a.number = 90
a_key = a.put() # returns the Key object of a's datastore entity

b:

b = B()
b.name = 'test'
b.numbers = [a_key] # store a Key object in the ListProperty of b
b.put()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...