Как извлечь данные из двух классов GQL?
-
24-10-2019 - |
Вопрос
У меня есть следующие 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. Ссылка Пропертизанга.
Не связан с StackOverflow