所以问题就在这里。假设我有三个模式模块。例如。在
a.py
:
from models import A
class ASchema(ModelSchema):
class Meta:
model = A
text = fields.String(required=True)
bs = fields.Nested('BSchema', many=True, dump_only=True)
c.py
:
b.py
:
from models import B
class BSchema(ModelSchema):
class Meta:
model = B
text = fields.String(required=True)
as = fields.Nested(ASchema(exclude=ASchema.Meta.model.relations_keys), many=True, dump_only=True)
cs = fields.Nested(CSchema(exclude=CSchema.Meta.model.relations_keys), many=True, dump_only=True)
问题是我不能将BSchema
导入a.py
和{
你说你的问题是你不能“导入}依赖的是类
BSchema
到a.py和c.py”,但是看起来ASchema
和{B
(在你的代码段中没有定义),而不是类BSchema
,因此,您的一个选择是将“model”类定义从“ModelSchema”类定义中分离出来,这样您就有了“a”、“b”和“c”包,每个包都有子模块模型.py“和”模式.py“,带”模式.py“模块”依赖于“模型”,但“模型”不依赖于“模式”。在这就是说,当你有如此紧密的耦合时,通常意味着你的类真的属于同一个模块。。。在
编辑:看起来你的模型已经在一个不同的模块中了,所以我真的不明白是什么阻止你直接在“模式”模块中引用模型,例如:
请注意
这里“exclude”是
fields.Nested()
的关键字arg,而不是嵌套的Schema
和fields.Nested()
第一个参数应该是Schema
类或Schema
类名,不是aSchema
实例。相关问题 更多 >
编程相关推荐