Документ Mongoengine принимает любое значение как BooleanField - PullRequest
0 голосов
/ 13 февраля 2019

Я определил документ mongoengine с некоторыми логическими полями и определил 2 операции.Первый состоит из создания документов, которое я делаю из JSON с полями документа.второй - это обновление документа таким же образом, используя файл JSON.

Примером может быть:

class MyDocument
    boolean_field = BooleanField()
    other_field = StringField()

def create(dict):
    doc = MyDocument(**dict)
    doc.save()

def create(id, dict):
    doc = MyDocument.objects.with_id(id)
    for field_to_update, new_field_value in dict:
        setattr(doc, field_to_update, new_field_value)
    doc.save()

Но если я создаю документ с такими значениями:

{
    "boolean_field": "qwer",
    "other_field": "qwer"
}

{
    "boolean_field": 100,
    "other_field": "qwer"
}

Документы созданы, но в операции обновления это работаетхорошо, это не позволяет мне использовать другие типы в качестве значений booleanField.

В чем причина такого различного поведения и как я могу заставить создание документа работать так же, как документы обновляются.

...