Как получить доступ к другим элементам класса из ReferenceField в 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. Я хочу получить доступ к элементам класса User из класса Post (ref), используя:
User.objects.first().ref.title
Ошибка:
AttributeError: 'NoneType' object has no attribute 'title'
Как мне это сделать? Как получить доступ ко всем элементам, а не только к одному. Заранее спасибо.
1 ответ
Я не верю, что вы можете сделать это с полем ссылки, вам нужно взять ссылку и найти объект через:
Post.objects(id=User.objects().first().ref["id"]).first().title
Вы могли бы, однако, если бы вы сделали Post EmbeddedDocument пользователя и вы вызываете объекты пользователя с select_related, как:
User.objects().first().select_related(1).ref.title
Или вы можете переписать интерпретацию JSON, как описано здесь: /questions/9445397/kak-poluchit-dannyie-referencefield-v-mongoengine/9445409#9445409