Как получить доступ к другим элементам класса из 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

Другие вопросы по тегам