mongodb - 如何从 Mongoengine 中的 ReferenceField 访问其他类元素
问题描述
class User(db.Document):
email = db.StringField(required=True)
first_name = db.StringField(max_length=50)
ref = db.ReferenceField('Post')
class Post(db.Document):
title = db.StringField(max_length=120, required=True)
tags = db.ListField(db.StringField(max_length=30))
我有两个类 User 和 Post。我想使用以下方法从 Post 类(参考)访问 User 类的元素:
User.objects.first().ref.title
错误:
AttributeError: 'NoneType' object has no attribute 'title'
我该怎么做?如何访问所有元素,而不仅仅是一个。提前致谢。
解决方案
我不相信您可以使用参考字段来做到这一点,您必须获取参考并通过以下方式找到对象:
Post.objects(id=User.objects().first().ref["id"]).first().title
但是,如果您发布了用户的 EmbeddedDocument 并使用 select_related 调用 User 对象,则可以:
User.objects().first().select_related(1).ref.title
或者您可以按照此处的说明覆盖 json 解释: https ://stackoverflow.com/a/23990828/493685
推荐阅读
- java - 从 Oracle 导出并导入到 Azure SQL 重用实体 Spring Boot
- html - 滑块滑动有问题,克隆的幻灯片太多,我该如何控制它?
- c# - 局部函数作为递归方法的通用函数效率不高吗?(C#)
- python - sqlalchemy.exc.InvalidRequestError:对象'
' 已附加到会话 '5'(这是 '6') - python - C++ 程序中嵌入式蓝牙 python 脚本的问题
- c - 使用一个scanf()(或fscanf())更好还是没关系?
- aws-chime-sdk - Chime SDK setDeviceLabelTrigger 在第一次返回承诺后不请求权限
- r - 如何为每个 excel 文件获取单独的输出?
- python - event.widget 引用是什么意思,如何使用它来访问小部件
- github - 在 GitHub 拉取请求中查找字符串