ReferenceFields 与 MongoEngine
ReferenceFields with MongoEngine
我正在玩 MongoEngine,我找不到查询 ReferenceFields 的方法
class UserAccount(Document):
name = StringField()
class UserGroup(Document):
name = StringField()
accounts = ListField(ReferenceField(UserAccount))
group = UserGroup.objects(name='SomeName').first()
我有很多 UserAccounts 和 UserGroups 使用这些帐户。
我正在尝试获取群组中已有的帐户列表:
accounts_in_group = group.accounts
不在该组中的有:
accounts_not_in_group = UserAccount.objects(_id__nin=group.accounts)
没用
ValidationError: UserAccount object is not a valid ObjectId
有办法实现吗?
提前致谢
问题是您试图将 UserAccount
模型列表用作 ObjectId
模型列表,这显然失败了。在进行查询之前,您需要将模型列表转换为 ID 列表,例如使用列表理解:
account_ids = [item.pk for item in group.accounts]
accounts_not_in_group = UserAccount.objects(_id__nin=account_ids)
我正在玩 MongoEngine,我找不到查询 ReferenceFields 的方法
class UserAccount(Document):
name = StringField()
class UserGroup(Document):
name = StringField()
accounts = ListField(ReferenceField(UserAccount))
group = UserGroup.objects(name='SomeName').first()
我有很多 UserAccounts 和 UserGroups 使用这些帐户。 我正在尝试获取群组中已有的帐户列表:
accounts_in_group = group.accounts
不在该组中的有:
accounts_not_in_group = UserAccount.objects(_id__nin=group.accounts)
没用
ValidationError: UserAccount object is not a valid ObjectId
有办法实现吗?
提前致谢
问题是您试图将 UserAccount
模型列表用作 ObjectId
模型列表,这显然失败了。在进行查询之前,您需要将模型列表转换为 ID 列表,例如使用列表理解:
account_ids = [item.pk for item in group.accounts]
accounts_not_in_group = UserAccount.objects(_id__nin=account_ids)