如何从Mongoengine中的ReferenceField访问其他类元素

时间:2019-01-12 08:37:02

标签: mongodb mongodb-query mongoengine flask-mongoengine

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 class(ref)访问User类的元素:

User.objects.first().ref.title

错误:

AttributeError: 'NoneType' object has no attribute 'title'

我该怎么做?如何访问所有元素,而不仅仅是一个。预先感谢。

1 个答案:

答案 0 :(得分:0)

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

Post.objects(id=User.objects().first().ref["id"]).first().title

虽然可以,如果您发布了一个User的EmbeddedDocument文件,并使用select_related调用User对象,例如:

User.objects().first().select_related(1).ref.title

或者您可以按照以下说明覆盖json解释: https://stackoverflow.com/a/23990828/493685