首页 > 解决方案 > 使用新关系更新用户对象

问题描述

我有一个用户对象:

class User():
    id = Column(Integer, primary_key=True)
    name = Column(String(255), unique=True, nullable=False)
    active = Column(Boolean())
    user_domain_id = Column(Integer, ForeignKey("domain_info.domain_id"))
    user_domain = relationship('DomainInfo',  foreign_keys=[user_domain_id])

我正在尝试使用侦听器将 user_domain 添加到一组用户:

@event.listens_for(DomainInfo, "after_insert")
def after_domain_insert(mapper, connection, target):
    user_domain = DomainInfo.query.filter(func.lower(DomainInfo.domain_name) == func.lower("some_criteria").first()
    stmt = user_tables.update().\
        values(active=True, user_domain=target). \
        where(func.lower(User.email).like('%' + func.lower(target.domain_name)))
    connection.execute(stmt)

我收到以下错误:

sqlalchemy.exc.CompileError
sqlalchemy.exc.CompileError: Unconsumed column names: user_domain

使用连接时更新用户对象的最佳方法是什么?

标签: pythonflasksqlalchemyflask-sqlalchemyflask-security

解决方案


我通过更新 user_domain_idwithtarget.domain_id而不是更新 with 来解决这个user_domain问题target

stmt = user_tables.update().\
        values(active=True, user_domain_id=target.domain_id). \
        where(func.lower(User.email).like('%' + func.lower(target.domain_name)))
connection.execute(stmt)

推荐阅读