Я пытаюсь mongoengine в колбе (python). И пытался создать поле «один-к-одному».Mongoengine - добраться туда, куда направлен объект
У меня есть модель User
, а также модели для типов пользователей, как Author
, Buyer
и т.д. Вот простой вариант моих моделей:
class User(db.Document):
username = db.StringField()
password = db.StringField()
class Author(db.Document):
books = db.ListField(db.StringField())
user = db.ReferenceField(document_type=User, required=True)
Теперь я могу получить пользователь от автора, просто
a = author.objects.all()[0] # Or get author through some other method
a.user
Но если у меня есть пользователь, как я могу получить автора?
u = user.objects.all()[0]
u.get_author() # ???
Я знаю, что могу сделать Author.objects.get(user=u)
, но мне было интересно, если это может быть сделано без дополнительного запроса.
Хорошая идея о недвижимости! К сожалению, нет никакого способа сделать это без дополнительного запроса. (Пример пользователя автора был упрощенным примером, и в моем реальном случае я не могу реализовать наследование документов.) – AbdealiJK
Если вас больше беспокоит оптимизация чтения, чем оптимизация записи, вы всегда можете сохранить ссылку в обоих документах на момент написания. –