Ошибка циклического импорта схемы API Django Ninja

У меня UserSchema:

# users/models.py
class User(AbstractUser):
    ...


# users/schemas.py
from typing import List
from tasks.schemas import TaskSchema

class UserSchema(ModelSchema):
    tasks: List[TaskSchema] = []

    class Config:
        model = User
        ...

... и TaskSchema:

# tasks/models.py
class Task(models.Model):
    ...
    owner = models.ForeignKey(User, related_name="tasks", on_delete=models.CASCASE)


# tasks/schemas.py
from users.schemas import UserSchema

class TaskSchema(ModelSchema):
    owner: UserSchema

    class Config:
        model = Task
        ...

Но он бросает:

ImportError: cannot import name 'TaskSchema' from partially initialized module 'tasks.schemas' (most likely due to a circular import) (/Users/myname/codes/django/ninja-api/tasks/schemas.py)

Я хочу сделать следующее: я хочу получить:

  1. GET /api/todos - список задач со связанными владельцами
  2. GET /api/todos/{task_id} - задача с владельцем
  3. GET /api/users/{user_id} - пользователь со списком принадлежащих ему задач

Версии:

python = ^3.11
django = ^4.1.5
django-ninja = ^0.20.0

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Вы можете проверить, совпадает ли имя двух моделей или имя файла, если это также не работает, то скажите им сделать модель в том же файле или добавить эту модель в тот же файл, чтобы не происходило циркуляции данных.

Надеюсь, это поможет вам.

Вернуться на верх