5.10 Реализация аутентификации используя HTTP Basic Auth
7 из 7 шагов пройдено
2 из 2 баллов  получено

Далее нам необходимо выполнить миграции, чтобы эти изменения отразились в базе данных. Для этого откроем файл migrations/env.py и добавим эту новую модель User:

from app.backend.db import Base
from app.models import category, products, user
target_metadata = Base.metadata

Выполним следующую команду, чтобы создать наши миграции:

alembic revision --autogenerate -m "Create User model"

Получим следующий результат: 

(.venv) permin0ff@Mac fastapi_ecommerce % alembic revision --autogenerate -m "Create User model"
INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.
INFO  [alembic.autogenerate.compare] Detected added table 'users'
INFO  [alembic.autogenerate.compare] Detected added index ''ix_users_id'' on '('id',)'
INFO  [alembic.ddl.postgresql] Detected sequence named 'products_id_seq' as owned by integer column 'products(id)', assuming SERIAL and omitting
INFO  [alembic.autogenerate.compare] Detected added column 'products.supplier_id'
INFO  [alembic.autogenerate.compare] Detected added foreign key (supplier_id)(id) on table products
  Generating /Users/permin0ff/PycharmProjects/FastAPI_beginners/fastapi_ecommerce/app/migrations/versions/d7f76dc3dd94_create_user_model.py ...  done

Далее применим наши миграции используя команду:

alembic upgrade head

И получим следующий результат: 

(.venv) permin0ff@Mac fastapi_ecommerce % alembic upgrade head
INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade 6c9fbe9d8c67 -> d7f76dc3dd94, Create User model
(.venv) permin0ff@Mac fastapi_ecommerce % 

И теперь если мы откроем нашу базу данных, мы увидим следующее ее содержание, имеющую новые связи:

 

 

Далее мы создадим Pydantic схему для создания пользователей, для этого в файле schemas.py добавим ее:

class CreateUser(BaseModel):
    first_name: str
    last_name: str
    username: str
    email: str
    password: str

При создании нового пользователя, мы должны будем передать следующие поля - имя, фамилию, логин, email и пароль.

В следующем шаге приступим к реализации конечной точки создания пользователей.


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

Коллеги, я застрял, прошу ткнуть меня в нужную сторону...

При попытке миграции получаю ошибку:

 Foreign key associated with column 'products.supplier_id' could not find table 'users' with which to generate a foreign key to target column 'id'

Саму таблицу я уже создал без добавления поля supplier_id(после первой ошибки попытался создать таблицу отдельно)

файл user.py в папке models создан

env.py в migrations изменен

в модельках ошибки не вижу

Help =)

@Алексей_Бойко, а файл миграций *_create_user_model.py создался или нет?

@Алексей_Бойко,  Файл есть, таблица создаётся:

Изменен Алексей Бойко

@Алексей_Бойко, Нашел проблему - почему то в файле app/models/products.py не срабатывала строчка для модели User

from app.models import *

Не смотря на то, что файл __init__.py я дополнил (кстати, может стоит добавить это в теорию?)

from .category import Category
from .products import Product
from .user import User

Но стоило мне на прямую импортировать модель User в файле app/models/products.py

from app.models.user import User

всё завелось.