【问题标题】:Django Ninja API schema circular import errorDjango Ninja API 模式循环导入错误
【发布时间】:2023-02-18 03:34:56
【问题描述】:

我有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
    

【问题讨论】:

    标签: python django api rest django-ninja


    【解决方案1】:

    您可以检查两个模型的名称或文件名是否相同,如果这也不起作用,然后告诉他们在同一文件中制作一个模型或在同一文件中添加该模型,这样循环数据就不会发生。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2016-12-01
      • 2018-09-11
      • 2020-07-11
      • 2021-04-06
      • 2020-11-05
      相关资源
      最近更新 更多