我使用 SQLAlchemy 来定义一个User
类。
如果用户没有登录我的网站,我想将他标识为AnonymousUser
. 我希望我AnonymousUser
成为我普通User
类的子类,使用特殊方法(例如。is_anonymous(self): return true
)。
现在,我最初在我的数据库中创建了一个匿名用户,使用 (say) id = 0
。
我想定义AnonymousUser
为的子类User
,其中构造函数只返回匿名用户:
class AnonymousUser(User):
def __init__(self):
anonymous_user = User.get_by_id(0)
self.username = anonymous_user.username
self.id = anonymous_user.id
...
但是当我创建一个时AnonymousUser
,它不明白我不想要一个新的User
,而只是创建一个现有的,并且它向会话User
提交一个新的创建,并且由于已设置为现有的 anonymous_user它崩溃由于 id 唯一性条件User
id
id
如何告诉 SQLAlchemyUser
使用现有 ID 创建对象?
有没有更优雅的方式来做我想做的事?
我知道我可以通过 using 简单地定义一个 anonymous_user User.get_by_id(0)
,但是我必须在is_anonymous
我的对象中添加一个字段并在每次检查我的用户是否是匿名的时进行变量检查(而不是有两个不同的类,一个是微不足道的实施is_anonymous: return False
和其他使用is_anonymous: return True