Я создал две связанные таблицы, и вот как они выглядят: <pre><code class="python">class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(30), nullable=False, unique=True, index=True) password = db.Column(db.String) rol = db.Column(db.String(15), index=True) date_registration = db.Column(db.DateTime, default=datetime.utcnow) user_cards = db.relationship("Cards", backref="user") class Cards(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, nullable=False) text = db.Column(db.Text) date_add_card = db.Column(db.DateTime, default=datetime.utcnow) user_id = db.Column(db.Integer, db.ForeignKey('user.id'))</code></pre> На странице /index я вывел все карточки и даты их добавления. Теперь у меня возник вопрос: как вывести автора каждой карточки? Вот HTML код, который я использую: <br/> <pre><code class="html">{% for el in list_cards %} {{ el.name }} {{ el.text }} Дата публикации: {{ el.date_add_card.date() }} Автор: {{ el.user_id }}</code></pre> В текущем варианте у меня выводится user_id, но я не могу обратиться к username. Я пытался сделать так: <code class="html">Автор: {{ el.user_id.username }}</code>, но это не работает, в то время как {{ el.user_id }} выводит корректный ID автора. Как мне правильно получить имя пользователя?
Чтобы получить имя пользователя (username) автора карточки, вам нужно использовать связь между таблицами, которую вы уже определили. В классе `Cards` вы создали отношение к пользователю через внешний ключ `user_id`, что позволит вам получить экземпляр `User`, связанный с каждой карточкой. В вашем случае вы можете обратиться к пользователю через свойство backref (в данном случае `user`) объекта `Cards`. То есть, вам нужно заменить `{{ el.user_id }}` на `{{ el.user.username }}`. Это вызовет атрибут `username` объекта `User`, связанного с данной карточкой. Ваш HTML код будет выглядеть следующим образом: ```html {% for el in list_cards %} {{ el.name }} {{ el.text }} Дата публикации: {{ el.date_add_card.date() }} Автор: {{ el.user.username }} {% endfor %} ``` Таким образом, каждая карточка будет выводить имя пользователя вместо его идентификатора. Убедитесь, что в списке `list_cards` вы действительно загружаете все необходимые данные (в данном случае связанные пользователи) при выборке карточек из базы данных. Если вы используете SQLAlchemy, вы можете воспользоваться методом `joinedload()` для этого. Например: ```python from sqlalchemy.orm import joinedload list_cards = Cards.query.options(joinedload(Cards.user)).all() ``` Это поможет избежать дополнительных запросов к базе данных и загрузить информацию о пользователе за один запрос.
Если кратко осенило меня решением оно оказалось довольно простым я должен был обращаться через то что написано в backref , а в моем случае это было "user" написал вместо Автор: {{ el.user_id.username }} вот это Автор: {{ el.user.username }} и о чудо оно сработало