我正在尝试创建一个 ndb 模型,其中每个记录都有一个唯一的字段“名称”。我想将此字段定义为 key_name 字段并用它来查找记录。我是否必须包含名称字段,或者我可以以某种方式将 key_name 字段设置为用户可以指定的任意字符串(只要它是唯一的)?
我正在考虑使用 Model.get_or_insert 来确保旧记录不会被覆盖,但是有没有办法判断返回值是新创建的还是预先存在的?如果用户输入重复的名称,我希望能够显示错误消息。
最后,我尝试在 DjangoForms 模型上创建一个 key_name 字段,该模型使用上述 ndb 模型作为元类,以便我可以使用 djangoforms 进行验证/渲染,但由于某种原因,我定义的字段没有显示。
类 UserProfileForm(djangoforms.ModelForm):
key_name = djangoforms.StringProperty()
类元:
模型=用户配置文件
我是否必须包含名称字段,或者我可以以某种方式将 key_name 字段设置为用户可以指定的任意字符串(只要它是唯一的)?
您可以将您的唯一密钥名称传递为id
模型构造函数的参数:profile = UserProfile(id='my_unique_name')
.
我正在考虑使用 Model.get_or_insert 来确保旧记录不会被覆盖,但是有没有办法判断返回值是新创建的还是预先存在的?如果用户输入重复的名称,我希望能够显示错误消息。
Use Model.get_by_id()
。它将返回一个模型实例或None
如果没有找到模型:
profile = UserProfile.get_by_id('my_unique_name')
if profile:
# display error message saying that the user already exists.
最后,我尝试在 DjangoForms 模型上创建一个 key_name 字段,该模型使用上述 ndb 模型作为元类,以便我可以使用 djangoforms 进行验证/渲染,但由于某种原因,我定义的字段没有显示。
我不知道 DjangoForms 是如何工作的,但很可能它们与 NDB 不兼容。您将需要创建自己的验证逻辑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)