2015-12-29 60 views
0

我玩MongoEngine,我無法找到查詢ReferenceFieldsReferenceFields與MongoEngine

class UserAccount(Document): 
    name = StringField() 

class UserGroup(Document): 
    name = StringField() 
    accounts = ListField(ReferenceField(UserAccount)) 

    group = UserGroup.objects(name='SomeName').first() 

我有很多UserAccounts和羣組與這些帳戶的方式。 我試圖讓這些已經在組帳戶列表:

accounts_in_group = group.accounts 

,哪些不是這個組中:

accounts_not_in_group = UserAccount.objects(_id__nin=group.accounts) 

它不工作

ValidationError: UserAccount object is not a valid ObjectId 

有沒有辦法做到這一點?

在此先感謝

回答

1

的問題是,你要使用的UserAccount車型名單爲ObjectId秒的名單,這顯然會失敗。在進行查詢之前,您需要將模型列表轉換爲ID列表,例如使用列表理解:

account_ids = [item.pk for item in group.accounts] 
accounts_not_in_group = UserAccount.objects(_id__nin=account_ids) 
+0

Yeap,這就是我做的!不管怎樣,謝謝你!!! – HammerSpb