【问题标题】:Flask-SQLAlchemy: '"{0}" is not a valid field for {1}.'.format(key, obj))Flask-SQLAlchemy: '"{0}" 不是 {1} 的有效字段。'.format(key, obj))
【发布时间】:2018-08-10 17:56:04
【问题描述】:

我正在尝试使用 Flask 和 SQLAlchemy 创建一个 API,我的函数 add_user 运行良好,get_all 用户也一样,但是我在通过电子邮件选择的获取用户(返回特定用户)时遇到了一些问题(邮件是我的主要键)。

class User(db.Model):
    #id = db.Column(db.Integer)
    name = db.Column(db.String(30))
    badgenum = db.Column(db.String(30))
    mail = db.Column(db.String(30), primary_key=True)
    status = db.Column(db.String(30))
    admin = db.Column(db.String(30))
    #borrowed = db.relationship('Borrowing', backref='user', lazy=True)

def __init__(self, name, badgenum, mail, status, admin):
    self.name = name
    self.badgenum = badgenum
    self.mail = mail
    self.status = status
    self.admin = admin


class UserSchema(ma.Schema):
    class Meta:
        fields = ('name', 'badgenum', 'mail', 'status', 'admin')
user_schema = UserSchema()
users_schema = UserSchema(many=True)

那么,我的函数导致问题:

@app.route("/users/<mail>", methods=["GET"])
def user_detail(mail):
    user = User.query.filter(User.mail == mail).first()
    return user_schema.jsonify(user.name)

我用 Postman 测试我的 API,我在我的数据库中添加了 2 个新用户,然后当我尝试最后一个函数时,我遇到了这个错误:

第 834 行,在 __filter_fields '"{0}" 不是 {1} 的有效字段。'.format(key, obj)) AttributeError: "status" 不是 username1 的有效字段。

【问题讨论】:

    标签: python api flask sqlalchemy marshmallow


    【解决方案1】:

    尝试如下。

        user = User.query.filter_by(mail=mail).first()
        return user_schema.jsonify(user)
    

    【讨论】:

    • 实际上这两个代码都有效,user = User.query.filter(User.mail == mail).first()user = User.query.filter_by(mail=mail).first() 。在返回结果时,我们可以说 like 。 return user_schema.jsonify(user)
    猜你喜欢
    • 2016-12-17
    • 2017-09-15
    • 2020-09-24
    • 2021-08-04
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多