カスタム QuerySet を作成しました。
class CustomQuerySet(QuerySet): def get_campaign(self, name=None): query = {'campaigns': { '$elemMatch': { '_syskey': name or 'default'}}} return self.filter(__raw__=query)[0] class Client(Document): ... meta = { 'collection': 'my_collection', 'allow_inheritance': False, 'indexes': ['client_id', ], 'queryset_class': CustomQuerySet }
コンソールに実行します。
client = Client.objects(client_id=2) client.get_campaign('default') client.get_campaign('default') # here exception is born InvalidQueryError: Duplicate query conditions: __raw__
1 と 2 のコマンドをもう一度繰り返すと、例外は表示されません。
client = Client.objects(client_id=2) client.get_campaign('default')
しかし、3行の例外が繰り返された後:
client.get_campaign('default')
それは何ですか?どうやって決める?