【发布时间】:2019-12-19 11:05:42
【问题描述】:
我遇到了烧瓶棉花糖和 SQAlchemy 的问题,我不知道如何解决。
我有两个模型:
class User(db.Model):
__tablename__ = "user"
id = db.Column(db.Integer, primary_key=True)
rol = db.Column(db.String(15), nullable=False, default="user")
tasks = db.relationship("Task", backref="user", lazy=True)
def __init__(self, username: str, password: str, rol: str = "user"):
self.username = username
self.password = password
self.rol = rol
class Task(db.Model):
__tablename__ = "task"
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(50), nullable=True)
description = db.Column(db.String(255), nullable=False)
timestamp = db.Column(db.DateTime)
user_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False)
def __init__(self, title: str, description: str):
self.title = title
self.description = description
self.timestamp = datetime.now()
然后我定义了两个模式:
class UserSchema(ma.ModelSchema):
class Meta:
model = User
load_only = ("password",)
class TaskSchema(ma.ModelSchema):
class Meta:
model = Task
include_fk = True
dump_only = ("timestamp",)
当执行用户模型的转储时,我只会得到一个 taks_id 列表作为任务,如下所示:
{
"user": {
"id": 3,
"tasks": [
2,
3,
4,
5,
6,
7
],
"username": "dhouard1",
"rol": "admin"
}
}
但是,当我在 UserSchema 中添加嵌套模式时,例如:
tasks = ma.Nested("TaskSchema")
我有一个空集:
{
"user": {
"id": 3,
"rol": "admin",
"username": "dhouard1",
"tasks": {}
}
}
我有什么遗漏的吗?
【问题讨论】:
标签: python marshmallow