簡體   English   中英

使用現有ID創建一個新對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM