Skip to main content
 首页 » 编程设计

python之模型中的自动 GUID key_name

2025年05月04日27haluo1

我希望我的模型自动获得一个 GUID 作为 key_name,我正在使用下面的代码。这是解决问题的好方法吗?它有什么缺点吗?

class SyncModel(polymodel.PolyModel): 
    def __init__(self, key_name=None, key=None, **kwargs): 
        super(SyncModel, self).__init__(key_name=str(uuid.uuid1()) if not key else None,key=key, **kwargs) 

请您参考如下方法:

在 Model 子类上覆盖 __init__ 是危险的,因为构造函数除了被用户代码使用外,还被框架用来从数据存储中重建实例。除非您确切知道构造函数是如何用于重建现有实体的——这是一个内部细节并且将来可能会发生变化——否则您应该避免重写它。

相反,定义一个工厂方法,如下所示:

class MyModel(db.Model): 
  @classmethod 
  def new(cls, **kwargs): 
    return cls(key_name=str(uuid.uuid4()), **kwargs)