我和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
有没有办法实现这个目标?
提前致谢
答案 0 :(得分:1)
问题在于您尝试将UserAccount
模型列表用作ObjectId
的列表,这显然会失败。在进行查询之前,您需要将模型列表转换为id列表,例如使用list comprehension:
account_ids = [item.pk for item in group.accounts]
accounts_not_in_group = UserAccount.objects(_id__nin=account_ids)