Flask: динамический доступ к атрибутам объекта модели базы данных в шаблонах HTML - PullRequest
0 голосов
/ 18 июня 2020

Недавно я хотел разработать свой собственный интерфейс, похожий на админку, из интерфейса Django для моего Flask приложения. Я использую flask -sqlalchemy для взаимодействия с моей базой данных postgres. Скажем, у меня есть такая модель

class User(db.Model):
    __tablename__ = "users"
    id = db.Column(db.Integer, primary_key=True)
    user_name = db.Column(db.String, unique=True, nullable=False)
    password = db.Column(db.String, nullable=False)

На первом этапе я хотел запросить все имена столбцов и их строки из этой таблицы, что возможно

column_names = User.__table__.columns.keys()
records = User.query.all()

Это дает мне список всех имен столбцов и список списков всех объектов, созданных для этой таблицы. И я могу получить доступ к данным объекта как

records[0].id 
records[0].user_name

Но когда я сохраняю имена моделей таблиц в списке и пытаюсь получить имена столбцов и их записи динамически с помощью l oop, я не могу получить доступ к данным внутри объектов.

#This is my actual code
#Inside tables list, the items are Model objects not strings
tables = [User, Account, Role]
    for table in tables:
        #Column names -- This fetches column names correctly
        columns = table.__table__.columns.keys()
        for column in columns:
            print(column,end=' ')
        print()
        #All records -- This returns nothing
        for records in table.query.all():
            #Single record
            for record in records:
                for i in range(len(columns)):
                    #Record accessed by its column name -- Doesn't work
                    print(record.column[i])

Все, что я получаю, - это ничего, хотя я думаю, что все должно работать нормально. Если я допустил какую-либо ошибку, пожалуйста, укажите мне направление, чтобы исправить ее. Если нет, то каков правильный способ доступа к данным (когда имена таблиц и столбцов создаются динамически)?

Любая помощь будет оценена. Кроме того, я не хочу, чтобы все эти данные передавались в мои шаблоны как другой объект, поскольку это добавляет больше времени на обработку, скорее мне нужен способ создания самих шаблонов для непосредственного извлечения записей. Заранее спасибо.

...