[英]Create a new object using an existing id
我使用SQLAlchemy定義User
類。
如果用戶未登錄我的網站,我想將其標識為AnonymousUser
。 我希望我的AnonymousUser
成為我的普通User
類的子類,並使用特殊方法(例如is_anonymous(self): return true
)。
現在,我最初在數據庫中創建了一個匿名用戶,其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
,並提交一個新的創建User
的會話,因為id
已被設置為現有的Anonymous_user id
由於ID唯一性條件而崩潰
如何告訴SQLAlchemy使用現有ID創建User
對象?
有沒有更優雅的方式來做我想做的事?
我知道我可以使用User.get_by_id(0)
來簡單地定義一個User.get_by_id(0)
,但是隨后我必須向我的對象添加一個is_anonymous
字段,並在每次檢查用戶是否為匿名用戶時都要進行一次變量檢查(而不是兩個不同的類,一個實現簡單的實現is_anonymous: return False
,另一個使用is_anonymous: return True
快速建議。 您可以像這樣在User類上實現is_anonymous方法:
def is_anonymous(self):
return self.id == 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.