diff --git a/mongoengine/base/document.py b/mongoengine/base/document.py index 658d0c79..348ee977 100644 --- a/mongoengine/base/document.py +++ b/mongoengine/base/document.py @@ -147,7 +147,7 @@ class BaseDocument(object): if not hasattr(self, name) and not name.startswith('_'): DynamicField = _import_class('DynamicField') - field = DynamicField(db_field=name) + field = DynamicField(db_field=name, null=True) field.name = name self._dynamic_fields[name] = field self._fields_ordered += (name,) @@ -337,7 +337,7 @@ class BaseDocument(object): value = field.generate() self._data[field_name] = value - if value is not None: + if (value is not None) or (field.null): if use_db_field: data[field.db_field] = value else: diff --git a/mongoengine/document.py b/mongoengine/document.py index 71929cf1..c948dac2 100644 --- a/mongoengine/document.py +++ b/mongoengine/document.py @@ -1013,6 +1013,7 @@ class DynamicDocument(Document): field_name = args[0] if field_name in self._dynamic_fields: setattr(self, field_name, None) + self._dynamic_fields[field_name].null = False else: super(DynamicDocument, self).__delattr__(*args, **kwargs)