Люди из стека, привет.
Я чувствую, что должен быть очевидный ответ, но я провел большой поиск и прочитал много документов и кода и не могу прийти к нему.
(я собираюсь скрыть некоторые из реальных имен и так далее по причинам конфиденциальности ниже ...)
Это мой первый проект AppEngine, хотя я написал много Python.
Я пишу простое приложение, которое концептуально имеет только одну "таблицу базы данных", одну модель - назовите ее Person, она представляет одного человека в этом клубе владельцев собак.
У человека много частей, некоторые из которых повторяют части со своей собственной внутренней структурой, например «DogsOwned» и «PlayDates».Я хочу иметь отдельные определения для этих частей, которые я объединяю вместе, чтобы создать полную модель, поэтому у меня есть DogsOwned.py и PlayDates.py, на которые есть ссылки в моем основном файле Person.py.
Я повторяю, что мне не нужна отдельная «таблица базы данных» DogsOwned или PlayDates!Я только заинтересован в DogsOwned или PlayDates, которые включены в состав Person.
К сожалению, google.appengine.ext.db.Model
, похоже, не может включить другую модель.Вы можете использовать google.appengine.ext.db.ReferenceProperty
, но, похоже, ссылается на другой объект по ключу, требуя от меня "создать другую таблицу базы данных" (я знаю, что моя терминология не совсем верна, но вы поняли идею).*
Таким образом, чтобы получить всю запись Person, мне кажется, что должно быть несколько запросов, один для получения Person и один для каждой записи в DogsOwned или PlayDates.Все они будут совместно использовать одну и ту же группу сущностей, поэтому они должны быть связными, и все они должны масштабироваться, но «я» получает оплату от Google «по запросу» в некотором смысле за это, когда дело доходит до этого, поэтому я 'Мне бы хотелось, чтобы количество запросов было как можно ниже.Или ... возможно, группа сущностей каким-то волшебным образом решает мою проблему?
Ваши просвещающие комментарии требуют!Заранее спасибо.
ОБНОВЛЕНИЕ:
Другими словами: я хочу, чтобы Модель содержала повторяющиеся подэлементы - в псевдокоде,
struct Person {
Dog dogsOwned[];
PlayDates playDates[];
};
, где находятся Dogs и PlayDatesСвойства не примитивные.
Наследование Python для этого бесполезно - вы не можете наследовать один и тот же класс несколько раз, и что более важно, я хочу «содержит», а не «isa».