Google DataStore много ссылок на один - PullRequest
1 голос
/ 12 июля 2011

Итак, у меня есть два класса моделей:

class Dog(db.model):
   dogName = StringProperty()
   dogBreed = StringProperty()

class Cat(db.model):
   catName = StringProperty()
   catBreed = StringProperty()

, а затем у меня есть третий класс моделей для хранения всех фотографий

class Images(db.model):
  imageReference = ReferenceProperty(*Animal*, collection_name = 'allImages')
  imageURL = StringProperty()

Животное либоСобака или Кошка.Очевидно, что это не компилируется.

Теперь мой вопрос: есть ли способ, которым я могу добавить фотографии Cat с изображениями Dog?Или мне нужно создать больше таких моделей:

class DogImages(db.model):
  imageReference = ReferenceProperty(Dog, collection_name = 'allImages')
  imageURL = StringProperty()
class CatImages(db.model):
  imageReference = ReferenceProperty(Cat, collection_name = 'allImages')
  imageURL = StringProperty()

1 Ответ

3 голосов
/ 12 июля 2011

Вы можете использовать PolyModel :

class Animal(polymodel.PolyModel):
  name = db.StringProperty()
  breed = db.StringProperty()

class Dog(Animal):
  pass

class Cat(Animal):
  pass

Теперь у вас может быть ReferenceProperty, который ссылается на животных, и будут разрешены собаки или кошки.

Однако,у вас нет свойств, специфичных для каждого типа животных - почему бы просто не иметь обычную модель животных, добавить свойство, указывающее, к какому виду это относится, и полностью пропустить отдельные модели?

...