Hi Andrew. This
def update(self, upsert=False, multi=True, write_concern=None,
full_result=False, **update):
Since "upsert" is the first argument in the list, the Python interpreter considers the first argument you pass, { '_id': contest }, to be the value for "upsert", and complains later that you are also trying to pass the keyword argument "upsert=False", no matter how you do it.
ShoutletContestConfig.objects(id=contest).update(
config__submission__twitter_retweet_last_backfilled=backfill_date)
"upsert" will default to False in that case, but you could set it explicitly as a kwarg at the end:
ShoutletContestConfig.objects(id=contest).update(
config__submission__twitter_retweet_last_backfilled=backfill_date, upsert=False)
Or as the first positional argument:
ShoutletContestConfig.objects(id=contest).update(
False, config__submission__twitter_retweet_last_backfilled=backfill_date)
Let me know if that works, I'm not a MongoEngine user myself.