Если вы создаете два экземпляра Пользователя и сохраняете их, тогда у вас будет два документа в Коллекция. Если вы хотите, чтобы они оба имеют общую информацию, то есть несколько способов для достижения этой цели:
1. По умолчанию атрибутов
class User(db.Document):
email = db.StringField(required=True)
first_name = db.StringField(max_length=50)
last_name = db.StringField(max_length=50)
usertype = db.StringField(default="web user")
u1 = User(email="[email protected]", first_name="user", last_name="one").save()
u2 = User(email="[email protected]", first_name="user", last_name="two").save()
assert u1.usertype == "web user"
assert u2.usertype == "web user"
2. внедренных документы
class UserType(db.EmbeddedDocument):
role = db.StringField(choices=['Admin','Basic','Guest'])
class User(db.Document):
email = db.StringField(required=True)
first_name = db.StringField(max_length=50)
last_name = db.StringField(max_length=50)
usertype = db.EmbeddedDocumentField(UserType)
basic = UserType(role="Basic")
u1 = User(email="[email protected]", first_name="user", last_name="one", usertype=basic).save()
u2 = User(email="[email protected]", first_name="user", last_name="two", usertype=basic).save()
assert u1.usertype.role == "Basic"
assert u2.usertype.role == "Basic"
- . ссылочные документы
class UserType(db.Document):
role = db.StringField(choices=['Admin','Basic','Guest'])
class User(db.Document):
email = db.StringField(required=True)
first_name = db.StringField(max_length=50)
last_name = db.StringField(max_length=50)
usertype = db.ReferenceField(UserType)
basic = UserType(role="Basic").save()
u1 = User(email="[email protected]", first_name="user", last_name="one", usertype=basic).save()
u2 = User(email="[email protected]", first_name="user", last_name="two", usertype=basic).save()
assert u1.usertype.role == "Basic"
assert u2.usertype.role == "Basic"
Когда использовать EmbeddedDocument
по сравнению с ReferenceField
зависит от on your data model design.
можете ли вы добавить примерный код, чтобы дополнительно проиллюстрировать ваш вопрос? –
Я думаю, что я понимаю, что вы сомневаетесь в том, что хотите получить общую информацию между документами в mongodb, но она по-прежнему не на 100% понятна. –