gpt4 book ai didi

marshalling - 如何在flask_restful中将marshal_with用于不同类型的属性

转载 作者:行者123 更新时间:2023-12-02 03:22:52 28 4
gpt4 key购买 nike

我正在使用 flask_restful.marshal_with 来清理我的实体:

class Domain(db.Model):

__tablename__ = 'domain'

id = db.Column(db.BigInteger, primary_key=True)
domain_name = db.Column(db.String(253), unique=True)
user_id = db.Column(db.BigInteger, db.ForeignKey('user.id'), nullable=True)
.... # bunch of other sensitive fields I don't want to output

这是我的处理程序:
class Domains(Resource):
domain_fields = {
'id': fields.Integer,
'user_id': fields.Integer,
'domain_name': fields.String
}

@marshal_with(domain_fields)
def get(self, domain_id):
"""return domain details"""
entity = domain.Domain.query.get(domain_id)

return entity

user_id 属性可以是 None 或整数。

将 domain_fields 设置为输出 Bool 或 Int 而不是仅限于 Int 有什么好的说法?

最佳答案

您可以在 user_id 中放置一个默认值,如果 user_id 为 None,则将返回该默认值,或者您可以为 user_id 创建一个自定义字段以正确处理。

domain_fields = {
'id': fields.Integer,
'user_id': fields.Integer(default=False),
'domain_name': fields.String
}

或者
class CustomField(fields.Raw):
def output(self, key, obj):
return obj.user_id or False

domain_fields = {
'id': fields.Integer,
'user_id': CustomField,
'domain_name': fields.String
}

关于marshalling - 如何在flask_restful中将marshal_with用于不同类型的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32105943/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com