首页 > 解决方案 > 如何从 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'

我该怎么做?如何访问所有元素,而不仅仅是一个。提前致谢。

标签: mongodbmongodb-querymongoengineflask-mongoengine

解决方案


我不相信您可以使用参考字段来做到这一点,您必须获取参考并通过以下方式找到对象:

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


推荐阅读