Что такое хорошее свойство db для массива ключей для python с App Engine? - PullRequest
0 голосов
/ 18 ноября 2011

Для баров моментов представляет строку со всеми идентификаторами баров с ';'разделитель

как 6;5;9;15

class Foo(db.Model):
    id = db.StringProperty(multiline=True)
    name = db.StringProperty(multiline=True)   
    bars = db.TextProperty()

class Bar(db.Model):
    id = db.StringProperty(multiline=True)
    name = db.StringProperty(multiline=True)

Что я должен сделать, чтобы явный Foo содержал несколько баров в БД?А также как будет выглядеть мой:

f = Foo()
f.name= 'aName'
f.id = '3615'
f.bars = '6;5;9;15'
f.put()

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

Предполагая, что это отношение «многие ко многим», вы можете использовать db.ListProperty(db.Key) для списка ключей Bar s или, если вы действительно хотите просто сохранить целочисленные идентификаторы, db.ListProperty(int).

Если каждый Bar может быть только строкой одного foo, вероятно, лучше использовать ReferenceProperty в сущности Bar, а затем использовать автоматическую обратную ссылку в Foo, чтобы получить запрос для всех бары.

Кстати, называть свойство id и делать его многострочной строкой, вероятно, плохая идея.

1 голос
/ 18 ноября 2011

Для начала, вы никогда не хотите хранить несколько значений в одном текстовом поле.Хранилище данных AppEngine поддерживает многозначные свойства (например, ListProperty): вы должны использовать их.

Тем не менее, встроенного многозначного эквивалента ReferenceProperty нет. Эта статья на сайте документации AppEngine дает хороший пример того, как смоделировать список ключей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...