2015-12-29 4 views
0

Je joue avec MongoEngine et je ne peux pas trouver le moyen d'interroger ReferenceFieldsReferenceFields avec MongoEngine

class UserAccount(Document): 
    name = StringField() 

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

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

J'ai beaucoup UserAccounts et UserGroups avec ces comptes. J'essaie d'obtenir la liste des comptes qui déjà dans le groupe:

accounts_in_group = group.accounts 

et qui ne sont pas dans ce groupe:

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

Il ne fonctionne pas

ValidationError: UserAccount object is not a valid ObjectId 

Y a-t-il un moyen d'y parvenir?

Merci à l'avance

Répondre

1

Le problème est que vous essayez d'utiliser la liste des UserAccount modèles comme une liste de ObjectId s, qui ne évidemment. Avant de faire une requête, vous devez transformer la liste des modèles en liste d'identifiants, par exemple en utilisant la compréhension de liste:

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

Yeap, c'est ainsi que je l'ai fait! Merci quand même!!! – HammerSpb