0

I need to find a document in the collection of Chat that contains no deal field. According to the documentation exists checks if the field exist, and first, is used to retrieve the first result, but the next line

Chat.objects.first(deal__exists=False)

raises TypeError: first() got an unexpected keyword argument 'deal__exists'

That's the Chat scheme

class Chat(Document):
    id = IntField(primary_key=True)
    name = StringField(default=CHANNEL_NAME)
    invite_link = StringField(default=None)
    deal = ReferenceField("Deal", default=None)

and current state of the only document in the collection:

{
    "_id" : XXXXXXXXX,
    "name" : "XXXXX",
    "invite_link" : "https://t.me/joinchat/XXXXXXXXXXXXXXXXXXXXXX"
}

Value none for the deal gives the same result

Sadderdaze
  • 304
  • 3
  • 14

2 Answers2

2

You can try :

Chat.objects.get(deal__exists=False)

or

Chat.objects(deal__exists=False)[0]

to find the first result.

Sadderdaze
  • 304
  • 3
  • 14
Ravi Shankar Bharti
  • 8,922
  • 5
  • 28
  • 52
0

Took me a while.

First of all, method first should be applied to the result of Chat.objects(deal=None). Just like Chat.objects(deal=None).first().

And it should not be used in with statement as it raises AttributeError: __enter__. Here are more details on the error

Sadderdaze
  • 304
  • 3
  • 14