У меня нет проблем с использованием данных, которые вы упомянули.Я вставил его в монго с помощью:
obj = {
"_id" : ObjectId("5d019fbdace49e498de7d915"),
"created_date" : ISODate("2018-05-18T16:00:00.000Z"),
"published_date" : ISODate("2018-05-18T16:00:00.000Z")
}
db.my_doc.insertOne(obj)
Затем я могу прочитать, изменить и сохранить в mongoengine:
from mongoengine import *
import datetime as dt
connect()
class MyDoc(Document):
created_date = DateTimeField(default=dt.datetime.utcnow)
published_date = DateTimeField(default=dt.datetime.utcnow)
doc = MyDoc.objects.first()
assert doc.created_date == dt.datetime(2018, 5, 18, 16, 0)
assert doc.published_date == dt.datetime(2018, 5, 18, 16, 0)
doc.created_date = dt.datetime.utcnow()
doc.save()
Но если я вставлю следующее:
{
"_id" : ObjectId("5d019fbdace49e498de7d916"),
"created_date" : {
"$date" : 1463587200000
},
"published_date" : ISODate("2018-05-18T16:00:00Z")
}
Тогда я получаю ошибку ValidationError, которую вы упомянули.DateTimeField Mongoengine правильно разрешает ISODate в mongodb, в этом случае это просто звучит так, как будто некоторые из ваших документов имеют другую структуру (или, возможно, это ваша схема, которая должна быть изменена).Дважды проверьте необработанные объекты в mongodb и убедитесь, что они все одинаковые.