文章内容

2018/8/6 15:02:51,作 者: 黄兵

TypeError: filter() got an unexpected keyword argument 'classification_id'

在使用Flask的时候,使用SQLAlchemy查询报如下错误:

builtins.TypeError

TypeError: filter() got an unexpected keyword argument 'classification_id'


出错原因:

查询错误,应该使用filter_by,却使用了filter。

filter_by():把等值过滤器添加到原查询上,返回一个新查询;

filter():把过滤器添加到原查询上,返回一个新查询。

在这里使用错误。源代码如下:

@manage.route('/admin_add_catalog', methods=['GET', 'POST'])
@login_required
@admin_required
def admin_add_catalog():
    # 获取当前用户id
    user_id = current_user.id
    # 页面信息
    user_info = User.query.get_or_404(user_id)
    title = '首 页'
    page_name = 'Dashboard'
    page_features = 'dashboard & statistics'
    form = AddClassificationCatalogForm()
    if form.validate_on_submit():
        get_classification_id = MaterialClassification.query.filter(classification_name=form.Catalog_to_Classification.data).first().id
        print(get_classification_id)
        if get_classification_id is None:
            flash(u'保存失败', 'error')
        classification_catalog = ClassificationCatalog(catalog_name=form.ClassificationCatalog_name.data,
                                                       classification_id=get_classification_id)
        db.session.add(classification_catalog)
        db.session.commit()
        flash(u'增加成功', 'success')
    return render_template('manage/admin_add_catalog.html', user_info=user_info, name=title,
                           pageName=page_name, description=page_name, pageFeatures=page_features, form=form)


解决方案:

修改源代码:

@manage.route('/admin_add_catalog', methods=['GET', 'POST'])
@login_required
@admin_required
def admin_add_catalog():
    # 获取当前用户id
    user_id = current_user.id
    # 页面信息
    user_info = User.query.get_or_404(user_id)
    title = '首 页'
    page_name = 'Dashboard'
    page_features = 'dashboard & statistics'
    form = AddClassificationCatalogForm()
    if form.validate_on_submit():
        get_classification_id = MaterialClassification.query.filter_by(classification_name=form.Catalog_to_Classification.data).first().id
        print(get_classification_id)
        if get_classification_id is None:
            flash(u'保存失败', 'error')
        classification_catalog = ClassificationCatalog(catalog_name=form.ClassificationCatalog_name.data,
                                                       classification_id=get_classification_id)
        db.session.add(classification_catalog)
        db.session.commit()
        flash(u'增加成功', 'success')
    return render_template('manage/admin_add_catalog.html', user_info=user_info, name=title,
                           pageName=page_name, description=page_name, pageFeatures=page_features, form=form)


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - TypeError: filter() got an unexpected keyword argument 'classification_id'

分享到:

发表评论

评论列表