schema - 如何过滤烧瓶棉花糖嵌套字段?
问题描述
我在用户的面向公众的个人资料页面上工作,我想在其中显示用户的个人资料以及他们“已发布”的食谱。我有以下 UserSchema,但此模式显示所有配方,包括尚未发布的配方。我只想严格显示已发布的食谱。有没有办法过滤掉尚未发布的食谱?我查看了棉花糖文档,但找不到答案。
class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), nullable=False, unique=True)
email = db.Column(db.String(200), nullable=False, unique=True)
password = db.Column(db.String(200))
recipes = db.relationship('Recipe', backref='user')
class UserSchema(Schema):
class Meta:
ordered = True
id = fields.Int(dump_only=True)
username = fields.String(required=True)
email = fields.Email(required=True)
password = fields.Method(required=True)
recipes = fields.Nested("RecipeSchema", many=True, exclude=("author",))
以下是RecipeModel 和RecipeSchema,
class Recipe(db.Model):
__tablename__ = 'recipe'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False)
description = db.Column(db.String(200))
is_publish = db.Column(db.Boolean(), default=False)
user_id = db.Column(db.Integer(), db.ForeignKey("user.id"))
class RecipeSchema(Schema):
class Meta:
ordered = True
id = fields.Integer(dump_only=True)
name = fields.String(required=True, validate=[validate.Length(max=100)])
description = fields.String(validate=[validate.Length(max=200)])
is_publish = fields.Boolean(dump_only=True)
author = fields.Nested(UserSchema, attribute='user', dump_only=True, exclude=('email', ))
负责返回用户配置文件数据的资源是:
from schemas.user import UserSchema
user_schema = UserSchema()
class UserResource(Resource):
@classmethod
def get(cls, _id: int):
user = User.query.filter_by(id=_id).first()
if not user:
return {"message": gettext("user_not_found")}, 404
return user_schema.dump(user), 200
电流输出为
{
"id": "1",
"username": "john.doe",
"recipes": [
{
"id": "1",
"name": "cheese pizza",
"description": "yummy",
"is_publish": true
},
{
"id": "2",
"name": "Potato Salad",
"description": "tags with sepearate function",
"is_publish": false
}
]
}
我希望它是
{
"id": "1",
"username": "john.doe",
"recipes": [
{
"id": "1",
"name": "cheese pizza",
"description": "yummy",
"is_publish": true
}
]
}
解决方案
推荐阅读
- python - Pyside6 应用程序在 2 次定时器超时和图片上的蓝色色调后退出
- r - 我应该如何获得均值和标准差取决于“日”和“类别”列,而无需在 R 代码中手动过滤
- java - 任务“:app:javaPreCompileDebug”执行失败
- nanoframework - 我喜欢将纳米框架扩展到 AURIX 产品,从哪里开始?
- xilinx-ise - Xilinx ISE Design Suite 14.7 未安装
- apache-kafka - Kafka 消费者的问题(提供的成员在当前一代中未知)
- ruby-on-rails - nil:NilClass 的未定义方法`klass`
- asp.net - 我们如何在不使用外部 IP 的情况下在 GCP 中部署 ASP.NET Framework 映像?我的应用程序在 ASp.net Windows 窗体中,我想在 GCP 上部署它
- azure - 你可以应用一个名为 Main 以外的东西的 terraform 文件吗?
- java - java.sql.SQLException:spring boot中的参数索引超出范围(6>参数个数,即5)