Вопрос

У меня есть следующие 2 класса:

class UsersRSS(db.Model):
    userId = db.IntegerProperty()
    fileHash = db.StringProperty()
    added = db.DateTimeProperty(auto_now_add=True)

class Files(db.Model):
    fileHash = db.StringProperty()
    title = db.StringProperty()
    file = db.BlobProperty()
    added = db.DateTimeProperty(auto_now_add=True)    

Мне нужно создать запрос GQL, который вернет данные из обеих таблиц:

items = UsersRSS.gql("WHERE userId = :userId ORDER BY date DESC LIMIT 10", userId=user_id)

Но каждый item Помимо fileHash а также added Поля должны содержать поля со второго класса - title а также file (Соответствие должно быть сделано fileHash поле).

Это было полезно?

Решение

Нет возможности извлечь из даты данных разные виды, используя одинаковые GQL SELECT оператор.

Другой вариант будет использовать Ссылка Чтобы создать отношения между ними между UsersRSS а также Files, рефакторирование вашего кода таким образом:

class UsersRSS(db.Model):
    userId = db.IntegerProperty()
    file = db.ReferenceProperty(Files)
    added = db.DateTimeProperty(auto_now_add=True)

class Files(db.Model):
    fileHash = db.StringProperty()
    title = db.StringProperty()
    file = db.BlobProperty()
    added = db.DateTimeProperty(auto_now_add=True)

items = UsersRSS.gql("WHERE userId = :userId ORDER BY date DESC LIMIT 10", userId=user_id)

Таким образом, Files свойства будут автоматически подвергнуты item.file.title точечная нотация:

for item in items:
    print item.UserID
    print item.Added
    print item.file.title #This costs an additional RPC call to Datastore

Чтобы сохранить ваше приложение от Overh Head Heard Happc ResearchProperty. Ссылка Пропертизанга.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top