Tôi không thể tạo lại lỗi của bạn ở đây. Bạn có thể cho biết bạn đang làm việc với phiên bản mongoengine nào không?
Đây là cách tôi có thể triển khai một ví dụ đơn giản:
trên các mô hình của tôi.py
class PointFieldExample(Document):
point = PointField()
name = StringField()
def toJSON(self):
pfeJSON = {}
pfeJSON['id'] = str(self.id)
pfeJSON['point'] = self.point
pfeJSON['name'] = str(self.name)
return pfeJSON
trên Django shell
$ python manage.py shell
>>> from mongoengine import *
>>> from myAwesomeApp.app.models import PointFieldExample
>>> pfe = PointFieldExample()
>>> pfe.point = 'random invalid content'
>>> pfe.toJSON()
{'id': 'None', 'name': 'None', 'point': 'random invalid content'}
>>> pfe.save()
ValidationError: ValidationError (PointFieldExample:None) (PointField can only accept lists of [x, y]: ['point'])
>>> pfe.point = [-15, -47]
>>> pfe.save()
<PointFieldExample: PointFieldExample object>
>>> pfe.toJSON()
{'id': '5345a51dbeac9e0c561b1892', 'name': 'None', 'point': [-15, -47]}
trên DB của tôi
> db.point_field_example.findOne()
{
"_id" : ObjectId("5345a51dbeac9e0c561b1892"),
"point" : {
"type" : "Point",
"coordinates" : [
-47,
-15
]
}
}
Trân trọng