Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 模型中的自动GUID键\u名称_Python_Google App Engine_Google Cloud Datastore - Fatal编程技术网

Python 模型中的自动GUID键\u名称

Python 模型中的自动GUID键\u名称,python,google-app-engine,google-cloud-datastore,Python,Google App Engine,Google Cloud Datastore,我想让我的模型自动获得一个GUID作为密钥名,我正在使用下面的代码。这是解决问题的好办法吗?它有什么缺点吗 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, **

我想让我的模型自动获得一个GUID作为密钥名,我正在使用下面的代码。这是解决问题的好办法吗?它有什么缺点吗

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)

有一篇文章介绍了如何使用和设置密钥名称,我不知道您当前的方法是否有效,但至少您应该知道其他选项

有一篇文章介绍了如何使用和设置密钥名称,我不知道您当前的方法是否有效,但至少您应该知道其他选项

模型
子类上重写
\uuuuu init\uuuu
是危险的,因为框架使用构造函数从数据存储中重建实例,用户代码也使用构造函数。除非您确切地知道如何使用构造函数来重建现有实体(这是一个内部细节,将来可能会更改),否则您应该避免重写它

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

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

模型
子类上重写
\uuuuuu init\uuuuu
是危险的,因为除了用户代码使用构造函数之外,框架还使用构造函数从数据存储中重构实例。除非您确切地知道如何使用构造函数来重建现有实体(这是一个内部细节,将来可能会更改),否则您应该避免重写它

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

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