Как смоделировать много капель для объекта? - PullRequest
0 голосов
/ 26 августа 2011

Я хочу включить что-то вроде отношения «один ко многим» между текстовым объектом и BLOB-объектами, чтобы у текстового объекта («статья» или аналогично) было много изображений и / или видео. Я вижу два способа сделать это, когда первый использует список больших двоичных объектов в качестве переменной экземпляра. Будет ли это работать?

class A(search.SearchableModel):
  blobs = db.ListProperty(blobstore.BlobReferenceProperty())

Преимущества: всего один класс. Читаемые и легко получить и установить данные. Недостатки: не хватает дополнительной информации для блобов, например если я хочу пометить блоб описательными словами, мне все равно нужны два класса:

class A(search.SearchableModel):
...
class B(db.Model):
  reference=db.ReferenceProperty(A,collection_name='matched_blobs',verbose_name="Title")
  blob = blobstore.BlobReferenceProperty()

Последующий пример имеет недостаток, поскольку он требует ссылочного свойства и вводит 2 класса, где проблема может быть решена только с помощью класса A, как в первом примере. Преимущество более позднего решения состоит в том, что оно четко задокументировано, в то время как свойство списка для свойств blobreference отсутствует, а более позднее решение, которое я уже реализовал, и теперь я думаю об использовании списка больших двоичных объектов вместо ссылочной коллекции. Имеет ли это значение или оба будут работать одинаково хорошо? Можете ли вы порекомендовать, какой способ выбрать, если какой-либо из этих или других?

Спасибо

1 Ответ

4 голосов
/ 26 августа 2011

App Engine фактически имеет статью об этом в своей документации: http://code.google.com/appengine/articles/modeling.html

...