Запрос к базе данных db.Model возвращает все свойства модели db.Model, являются ли они необходимыми или нет.Есть ли альтернатива? - PullRequest
3 голосов
/ 21 января 2011

У меня есть db.Model, которая имеет несколько свойств, как описано ниже:

class Doc(db.Model): 
    docTitle = db.StringProperty(required=True)
    docText = db.TextProperty()
    docUser = db.UserProperty(required=True)
    docDate = db.DateTimeProperty(auto_now_add=True)

В шаблоне я просто перечисляю названия этих документов в виде ссылок. Для этого я использую следующий запрос:

docList = Doc.gql("WHERE docUser = :1 ORDER BY docDate DESC", user)

Как вы можете видеть, docList включает в себя все свойства (включая «TextProperty»). Тем не менее, я просто использую его docTitle и key () на мой взгляд.

Есть ли альтернативный способ получить только запрошенные атрибуты класса модели?

Если нет, то следует ли мне использовать классы PolyModel для разграничения списка и фактического использования класса модели Doc путем создания другого класса модели для свойства docText?

РЕДАКТИРОВАТЬ: я использую веб-фреймворк веб-приложения в Google App Engine ...

1 Ответ

1 голос
/ 24 января 2011

Объекты хранятся в хранилище данных App Engine в виде сериализованных буферов протокола, которые возвращаются в виде одного большого двоичного объекта, поэтому невозможно просто извлечь их часть.В любом случае это сэкономит только накладные расходы RPC между хранилищем данных и вашим приложением, поэтому экономия будет минимальной.

Если размер каждой сущности значительный, вы можете выделить модель, так какВы предлагаете.Однако вам не нужно (и, вероятно, не следует) использовать PolyModel - просто используйте два класса моделей: «сводный» и «подробный».

...