从 mongoengine 中的文档获取必填字段?

2023-11-24

我希望能够获取我创建的文档所需的列表或某种字段集。例如,这是我的文档:

nickName        = StringField(required=True)
password        = StringField(required=True)
firstName       = StringField()
lastName        = StringField()
joinDate        = DateTimeField(required=True)
lastVisited     = DateTimeField(required=True)
subscriptions   = DictField(field=ObjectIdField())
isActivated     = BooleanField(default=True)
profileImage    = FileField()
isModerator     = BooleanField(default=False)
description     = StringField()
location        = GeoPointField()
email           = EmailField()
settings        = DictField()

^从这份文件中我应该收到:

["nickName","password","joinDate","lastVisited"]

作为必填字段的结果。这可能吗?如果是这样,我怎样才能达到想要的结果。

提前致谢!


您可以循环遍历 Class._fields 属性。

如果你的类被称为 User 你可以这样做:

>>> [k for k,v in User._fields.iteritems() if v.required]
['joinDate', 'password', 'nickName', 'lastVisited']

要获取基于创建的排序列表,您可以使用创建计数器,如下所示:

>>> from operator import itemgetter
>>> required_fields = ((v.creation_counter, k) for k,v in User._fields.iteritems() if v.required)
>>> sorted_required_fields = map(itemgetter(1), sorted(required_fields, key=itemgetter(0)))
>>> sorted_required_fields
['nickName', 'password', 'joinDate', 'lastVisited']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 mongoengine 中的文档获取必填字段? 的相关文章

随机推荐

  • 如何在不使用游标的情况下计算 SQL 中的运行总计?

    为了简洁起见 我省略了临时表中的所有游标设置和 SELECT 基本上 此代码计算每个交易的所有交易的运行余额 WHILE fetch status 0 BEGIN set balance balance amount insert into
  • 在将可选参数传递给另一个可选参数之前是否有必要检查它?

    我有以下关于可选参数的使用的问题 假设我有以下例程aaa模块中定义m aaa MODULE m aaa SUBROUTINE aaa a b INTEGER a INTEGER OPTIONAL b END SUBROUTINE END M
  • C# 实体框架 4 公共语言运行时检测到无效程序错误?

    如何调试 修复 公共语言运行时检测到无效程序 错误 到底是什么意思呢 我有一个 C MVC 2 Web 应用程序 可以部署到驻留在同一 IIS 7 5 Web 服务器 x64 上的两个网站 一个是实时站点 使用发布配置部署 第二个是测试站点
  • PHP move_uploaded_file() 错误?

    我使用以下代码 它成功地将文件上传到我的本地计算机上 它在我的本地计算机上显示 已成功上传 Upload file moved move uploaded file FILES file tmp name images myFile txt
  • 在 pgadmin iii 中导入 .sql 文件

    我想在 PostgreSQL 中导入一个 sql 文件 我正在使用 pgadmin iii 我在 phpmyadmin 中创建了一个 sql 文件 现在我想在 pgadmin iii 中导入相同的文件 我正在执行以下操作 但它对我不起作用
  • AWS CDK 子网选择

    我正在使用 AWS CDK 创建负载均衡器 我对CloudFormation很熟悉 在创建负载均衡器期间 我想给出如下子网 LB Type AWS ElasticLoadBalancingV2 LoadBalancer Properties
  • iOS 中的裁剪视频在视频周围看到奇怪的绿线

    大家好 我正在裁剪 iPhone 上相机拍摄的视频 然后裁剪并像这样回放 然而 当我这样做时 我在视频的底部和右侧周围出现了一条奇怪的绿线 不知道为什么会发生这种情况或如何解决它 这是我的裁剪方式 UIImageOrientation ge
  • 联合类型的部分键作为打字稿中对象的键

    我想使用联合类型的键作为打字稿中对象的键 type EnumType a1 a2 const object key in EnumType string a1 test 在这种情况下 我什至必须添加 a2 作为对象中的键 有没有办法让它成为
  • 使用 Spring mvc 创建第一个 Hello world 应用程序时出错

    首先 我想为可能重复的主题道歉 但我找不到问题的答案 我今天开始使用 spring mvc 我的 hello world 应用程序有一些问题 任何人都可以帮助我使这个程序运行吗 因为我遵循了一些说明 但我不知道如何解决这个问题 This是我
  • 32 位进程可以在 64 位 Windows 操作系统上访问更多内存吗?

    据我了解 在没有 3GB 开关的 32 位 Windows 上 32 位进程只能访问 2 GB 内存 并且其中一些内存由于其自身的邪恶原因而被操作系统占用 这似乎与我的经验相符 因为我们有一个应用程序 当它达到 1 2 1 5 GB 左右的
  • 检查 [] 运算符

    Python中如何检查对象是否支持 操作 我想到了类似以下的事情 if supports obj print Supports 您不 检查支持 你只需使用它 try a obj whatever except TypeError whate
  • JAX-RS 接受图像作为输入

    相当长一段时间以来 我一直在开发 JAX RS Web 服务来满足我的开发需求 到目前为止我编写的所有方法都接受 java 字符串或原始类型作为输入 这种方法的一个例子 POST Path MyMethod Produces MediaTy
  • C++项目中ffmpeg的CMake配置

    我已经使用 Homebrew 安装了 ffmpeg 版本 4 并且尝试在 C 项目中使用各种 ffmpeg 库 但在链接过程中遇到多个错误 Undefined symbols for architecture x86 64 av free
  • 浏览器选项卡和窗口之间的区别

    在 Web 浏览器中 每个窗口都有自己的 JavaScript 环境 以及自己的 JavaScript 环境 全局对象 但看起来在同一窗口中打开一个新选项卡也会创建一个不同的全局对象 这是真的吗 新选项卡和新窗口之间的主要区别是什么 唯一的
  • IntelliJ IDEA 不会加载在我的磁盘上找到的 Groovy

    您好 我最近想开始在 Groovy 中进行开发 但是当我尝试 IntelliJ IDEA 时 它不会加载 Groovy 因为它显示 看起来指定路径中的 Groovy 分发已损坏 不能 确定版本 发生了什么事我什至尝试了一些旧版本 但它也不起
  • 使用 Mono.Cecil 发出对 System.Lazy 构造函数的调用

    我正在尝试发出一种实例化 System Lazy 的方法 但失败并出现 无效令牌 的 PEVerify 错误 位于该行newobj instance void class mscorlib System Lazy 1
  • Next.JS 代码为何同时在服务器和客户端上运行?

    在 Next JS 应用程序中 您会看到组件的代码在服务器和客户端上运行 因此 如果您有以下代码 const Title gt console log gt Hello return h1 Some title h1 然后您在开发环境中运行
  • 将 ObservableCollection 绑定到 DataGridView

    我正在将可观察集合 FoodList 绑定到 WinForm 中的 BindingSource 此 BindingSource 由表单上的数据网格使用 我假设当我向集合中添加一个新项目时 它会引发一个事件 并且一个新行会出现在我的网格中 但
  • 如何使用RVM管理多个gemset和ruby版本?

    我对 RVM 网站上给出的解释感到非常困惑 我不清楚不同的红宝石解释器和宝石集之间的关系 按照我的说法 是这样的 我的 Mac 帐户有一个 rvm 该 nvm 安装并管理一组不同版本的 ruby 解释器 每个红宝石版本都有一组宝石 我把事情
  • 从 mongoengine 中的文档获取必填字段?

    我希望能够获取我创建的文档所需的列表或某种字段集 例如 这是我的文档 nickName StringField required True password StringField required True firstName Strin