Комментарии 13
Как дополнение:
В листинге __retr__ для User нет форматирования.
Всегда хотел попробовать фласк — вот читаю цикл этих переводов. Читаю по чуть-чуть когда есть время. Как-нибудь собирусь пощупать, как раз есть нужда сделать вебморду одному консольному приложению.
Кстати, заметил что сейчас CS50 на ютьюбе последние ролики — они там тоже взялись за изучение фласка. Буду параллельно и читать и смотреть! Спасибо!
Класс User
имеет новое поле сообщений, которое инициализируется db.relationship
. Это не фактическое поле базы данных, а высокоуровневое представление о взаимоотношениях между users
и posts
, и по этой причине оно не находится в диаграмме базы данных. Для отношения «один ко многим» поле db.relationship
обычно определяется на стороне «один» и используется как удобный способ получить доступ к «многим».
app/models.py
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True, unique=True)
email = db.Column(db.String(120), index=True, unique=True)
password_hash = db.Column(db.String(128))
posts = db.relationship('Post', backref='author', lazy='dynamic')
Первый аргумент db.relationship
указывает класс, который представляет сторону отношения «много». Аргумент backref
определяет имя поля, которое будет добавлено к объектам класса «много», который указывает на объект «один». Это добавит выражение post.author, которое вернет пользователю сообщение. Аргумент lazy
определяет, как будет выполняться запрос базы данных для связи,
А т.к. ошибка возникала при работе с экземпляром класса Post, то и смотрел в класс Post.
(venv) D:\projects center\python-projects\flask01>flask db init
Usage: flask [OPTIONS] COMMAND [ARGS]...
Error: No such command "db".
flask.cli.NoAppException: While importing "server", an ImportError was raised:
Traceback (most recent call last):
File "c:\users\mkon\appdata\local\programs\python\python37\lib\site-packages\flask\cli.py", line 235, in locate_app
__import__(module_name)
File "D:\projects center\python-projects\flask01\server.py", line 1, in <module>
from app import app
File "D:\projects center\python-projects\flask01\app\__init__.py", line 3, in <module>
from flask_sqlalchemy import SQLAlchemy
ModuleNotFoundError: No module named 'flask_sqlalchemy'
ModuleNotFoundError: No module named 'flask_sqlalchemy'
Видимо, забыли активировать виртуаленв (
source venv/bin/activate
), либо просто не установили flask_sqlalchemy: pip install flask_sqlalchemy
Мега-Учебник Flask, Часть 4: База данных (издание 2018)