Проблема с условным выражением Flask / Jinja2 - отображение класса sqlalchemy - PullRequest
0 голосов
/ 31 октября 2018

Я добавил страницу профиля пользователя в свое приложение для колб. Все работает, кроме одного пункта:

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

Я решил обойти это с небольшим юмором, используя оператор jinja2 if / else, чтобы проверить, есть ли у пользователя дата создания пользователя или нет.

Если у пользователя есть дата, она будет отображаться. Если нет, то вместо даты он заменит ее на «с незапамятных времен».

Проблема в том, что моя условная логика {% if user.user_created%}, кажется, использует тип класса sqlalchemy DateTime вместо None, отображая это так:

Member since: <class 'sqlalchemy.sql.sqltypes.DateTime'>

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

Вот мой код шаблона Jinja:

<h1>User: {{ user.username }}</h1>
  {% if user.about_me %}<p>{{ user.about_me }}</p>{% endif %}
  {% if user.user_created %}
    <p>Member since: {{ user.user_created }}</p>
  {% else %}
    <p>Member since: The dawn of time</p>
  {% endif %}

А вот колонка из моей модели sqlalchemy User:

user_created = (db.DateTime)

Любая помощь будет оценена

1 Ответ

0 голосов
/ 31 октября 2018

Да, после тестирования реализации в комментарии выше, это было на самом деле проблема.

Я случайно опустил столбец db.Column в моей модели. Все работает сейчас.

...