为 App Engine NDB 模型指定 key_name 的最佳方法是什么?

2024-05-22

我正在尝试创建一个 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(使用前将#替换为@)

为 App Engine NDB 模型指定 key_name 的最佳方法是什么? 的相关文章

随机推荐

  • COM多线程支持

    第一次使用COM我有这个 COM dll 比如 ABCServer dll 我创建了一个 RCW 并在我的项目中添加了对它的引用 现在 我的应用程序创建了多个线程 每个线程从 COM dll 创建某些类并使用它们 但是 当其他线程正在处理
  • Java ASN.1 编译器

    现在我正在使用二进制笔记 http bnotes sourceforge net 解析 ASN 1 文件以在 Java 项目中使用 它采用 ASN 1 定义并生成 Java 类 让我可以操作 ASN 1 文件 我用扩展标记碰壁了 因为它不支
  • 奥尔良谷物任务调用结果

    对于这个长问题我深表歉意 我一直在对奥尔良进行实验 以了解它的各种特性 这些问题在逻辑上都归为一类 第一个测试涉及客户端每 1 秒向特定 Grain 发出一次请求 而 Grain 需要 10 秒来执行请求 代码是这样的 client cod
  • 有用的 Delphi 代码模板

    我用 Delphi 编程已经两年多了 我大概只有 5 个自定义模板 我觉得我应该有更多 如果有人有任何特别有用的东西 那么在 stackoverflow 上有一个很好的存储库就太好了 我不在乎您使用的是 Delphi 2009 语法还是 D
  • Flutter 中声明式编程和命令式编程有什么区别?

    最近 我正在寻找一种方法来增强 Flutter 应用程序中屏幕之间的导航 我发现了新的编程概念 陈述性的 and 至关重要的编程 我需要了解更多关于陈述性的 and 至关重要的范例以及 Flutter 中的示例 声明式路由意味着您的应用程序
  • 使用 pip 或 conda 来管理包? [复制]

    这个问题在这里已经有答案了 我已经使用 matlab 进行机器学习很长一段时间了 最 近切换到 python 并使用其包管理器 pip 安装某些包并成功安装了许多包 几天前 我开始使用 conda 我以前安装的所有软件包都被覆盖 我真的很想
  • 用户警告:MovieWriter ffmpeg 不可用

    尝试在 google colab 上制作动画 收到此警告 用户警告 MovieWriter ffmpeg 不可用 warnings warn MovieWriter s 不可用 writer did pip 安装 ffmpeg 标准化但没有
  • 在一个查询中对同一个表进行多个 COUNT SELECT

    对于某些人来说 这可能看起来很简单 但我就是无法理解 我一遍又一遍地从同一个表中进行多个 MS SQL SELECT 查询 SELECT count Page as tAEC FROM someTable WHERE Page LIKE A
  • 访问 UserDefault 数组 URL 以填充 CollectionView

    这是上一篇文章的后续内容here https stackoverflow com questions 48142238 save and append an array in userdefaults from imagepickercon
  • 按名称显示进程的命令行

    我在cmd中使用以下命令来获取进程命令行 它提供了所有流程的详细信息 WMIC OUTPUT C ProcessList txt PROCESS get Caption Commandline Processid 我想在记事本中按名称获取特
  • 您如何在 Android 上处理超高 MP 相机(和图像)? - “画布:尝试绘制太大的位图”

    我有一个活动 用户可以像这样打开相机 getPictureUri createImageFromFile true let photoUri it openCameraActivity REQUEST IMAGE CAPTURE it ph
  • 逆向调试如何进行?

    GDB 推出了支持反向调试的新版本 请参阅http www gnu org software gdb news reversible html http www gnu org software gdb news reversible ht
  • 为什么乘法比除法便宜?

    我最近编写了一个 Vector 3 类 并将我的 normalize 函数提交给朋友审阅 他说这很好 但我应该尽可能乘以倒数 因为在 CPU 时间上 乘法比除法便宜 我的问题很简单 这是为什么 从硬件可以更轻松地实现的基本运算的角度来考虑
  • 使用 Sequelize (NodeJS) 代替 * 指定特定字段

    好吧 我在 NodeJS 中有一个项目 我正在其中使用 Sequelize 来实现 MySQL ORM 这件事工作得非常好 但是我试图弄清楚是否有一种方法可以指定在查询的基础上返回哪些字段 或者是否有一种方法可以在某处执行 query 例如
  • SQL Server 中全文搜索的奇怪行为

    我的 MyTable 带有列消息 NVARCHAR MAX ID 为 1 的记录包含消息 0123456789333444 Test 当我运行以下查询时 DECLARE Keyword NVARCHAR 100 SET Keyword 01
  • 通过shell脚本进行串口控制

    我正在开发一个方向控制器 我有一个开发板 它通过 I2C 与传感器 指南针 通信 由于主板非常有限 没有操作系统 我开发了一个简单的程序来接收以下内容 1 get 0 读取传感器的寄存器 0 2 set 0 10 将传感器的寄存器 0 设置
  • 用.htaccess重写动态url结构

    我尝试将动态 URL 如下 重写为稍微不同的结构 要么不起作用 要么我不确定它是否正确 旧网址 URL 1 index php lang AAA zone BBB city CCC str DDD search EEE 新网址 URL 11
  • 查找公因数以将浮点数列表转换为整数列表

    我有一个来自其他函数的浮点数列表 我所知道的是 在理想世界中存在一个共同因素 可用于将每一项相乘以获得整数列表 可能存在一些小的数值噪声 1e 14 例如 2 3333333333333335 4 666666666666667 1 0 1
  • 如何在 Python 中使这个随机文本生成器更加高效?

    我正在研究一个随机文本生成器 不使用马尔可夫链 目前它的工作没有太多问题 首先 这是我的代码流程 输入一个句子作为输入 这称为触发字符串 被分配给一个变量 获取触发字符串中最长的单词 在所有古腾堡计划数据库中搜索包含该单词的句子 无论大写还
  • 为 App Engine NDB 模型指定 key_name 的最佳方法是什么?

    我正在尝试创建一个 ndb 模型 其中每个记录都有一个唯一的字段 名称 我想将此字段定义为 key name 字段并用它来查找记录 我是否必须包含名称字段 或者我可以以某种方式将 key name 字段设置为用户可以指定的任意字符串 只要它