Flask-SQLAlchemy:'“{0}”不是{1}的有效字段。'。format(key,obj))

时间:2018-03-02 13:49:59

标签: python api flask sqlalchemy marshmallow

我正在尝试使用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的有效字段。

1 个答案:

答案 0 :(得分:0)

尝试如下。

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