Как стать автором
Обновить

Комментарии 13

Большое спасибо за перевод!

Как дополнение:
В листинге __retr__ для User нет форматирования.
Проверил. Вроде, везде есть
В определении класса, перед return нет пробелов.
Ага! Поправил
Я совсем не программист по роду деятельности. Проходил курс на udacity — Web programming — там был google app engine. Немного смотрел на джангу — и это просто «операционная система», а не фреймворк ))
Всегда хотел попробовать фласк — вот читаю цикл этих переводов. Читаю по чуть-чуть когда есть время. Как-нибудь собирусь пощупать, как раз есть нужда сделать вебморду одному консольному приложению.
Кстати, заметил что сейчас CS50 на ютьюбе последние ролики — они там тоже взялись за изучение фласка. Буду параллельно и читать и смотреть! Спасибо!
В листинге указано поле Author, но его нет, есть user_id

Класс 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 определяет, как будет выполняться запрос базы данных для связи,

Да! Спасибо! Забыл эту строчку добавить в класс User (((

А т.к. ошибка возникала при работе с экземпляром класса Post, то и смотрел в класс Post.
а вот у меня никак не получается победить flask db init

(venv) D:\projects center\python-projects\flask01>flask db init
Usage: flask [OPTIONS] COMMAND [ARGS]...

Error: No such command "db".
Больше скажу, flask run запускает сервер, но приводит к ошибке:
Заголовок спойлера
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
если вы взглянете, с чего я начал, то увидите, что venv активна.
то, что не может найти модуль, я тоже понял, но спасибо за ценный комментарий.

модуль установлен для venv.
сделал pip install flask_sqlalchemy за ее пределами.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории