Flask Firestore добавляет все элементы документа в словарь {без зацикливания}

# #python-3.x #google-cloud-firestore

Вопрос:

Должно быть, я делаю что-то не так

Я пытаюсь просмотреть все документы в коллекции и добавить содержимое в словарь.

Я добавил данные в словарь, но мое намерение состояло в том, чтобы просмотреть все документы:

 firebase_admin.initialize_app(cred)

db = firestore.client()
blog_col = db.collection(u'blog')


class Art_cont:
    def __init__(self,title,date,link):
        self.title = title
        self.date = date
        self.link = link



def getLast4():
    query = blog_col.order_by("date").limit_to_last(4).get()
    for doc in query: #Need to find a way to loop through all docs, this doesn't work
        db_title=doc.to_dict()["title"]
        db_date=doc.to_dict()["date"]
        db_link=doc.to_dict()["link"]
        content1=Art_cont(db_title,db_date,db_link)
        #here wrap them up with html and return them to app
    print(content1.title,content1.date,content1.link)
 

Когда я запускаю этот код, он выдает мне только первое содержимое документа:

введите описание изображения здесь

По сравнению с другими документами, имеющими ту же структуру:

введите описание изображения здесь

Буду признателен за любой совет.

Ответ №1:

Предполагая, что запрос является объектом вашей модели, напишите db_title = doc.your_attribute_name.to_dict()['title'] и сделайте то же самое для других атрибутов.

Ответ №2:

Ну, у меня почти получилось, вместо этого я создал функцию:

 def getlist(x):
    query = blog_col.order_by("date").limit_to_last(4).get()
    docs=[]
    for doc in query: 
        docs.append(doc)

    docnum=docs[x]
    db_title=docnum.to_dict()["title"]
    db_date=docnum.to_dict()["date"]
    db_link=docnum.to_dict()["link"]
    content=Art_cont(db_title,db_date,db_link)
    return content

print(getlist(0).title)
print(getlist(1).title)

etc...
 

Надеюсь, это поможет кому-нибудь в подобной ситуации.