我想要求我的模型类之一将我自己的自定义键指定为 key_name,这样我就可以始终依赖它的存在。我怎么能要求这个呢?例如,我可能有一个模型类,例如:
class Account(db.Model):
user = db.UserProperty(required=True)
email = db.EmailProperty()
我想要求 key_name 始终被指定,需要以如下方式实例化:
user_obj = users.get_current_user()
new_user = Account(user=user_obj, key_name=user.user_id())
new_user.put()
如何做到这一点?提前致谢
最佳答案
您可以通过一个简单的工厂函数来使 Account
模型的所有实例化(也许将类本身命名为 _Account
,以向项目中的其他编码人员阐明该类本身就是私有(private)的):
def make_account(key_name=None, **k):
if key_name is None:
raise ValueError('Must specify key_name for account!')
return _Account(key_name=key_name, **k)
您可以变得更复杂,并在类 Account
中的 classmethod
中执行此操作(通过一些检查覆盖后者的 __init__
,以使其不可能意外地从其他地方调用),&c,但这是核心思想:“在应用程序级代码中执行它”。
关于python - 使用 App Engine 创建模型类时如何需要 key_name?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3673721/