我正在为一个存储[lat,lng]的Web应用程序编写一个“位置”模型,除了包含地图上该点的符号名称的“title”字段外。我想让我的Location类成为EmbeddedDocument的子类,因为我很可能会在其他许多模型中使用它:
import mongoengine as mdb
class Location( mdb.EmbeddedDocument ):
....
position = mdb.GeoPointField()
title = mdb.StringField
现在我有一些其他使用Location的模型。
class RideRequest( mdb.Document ):
....
start = mdb.EmbeddedDocumentField( Location )
尝试在Django shell中创建RideRequest实例:
> loc = Location( position=[41.2939, -82.2175], title="Oberlin, OH" )
> req = RideRequest.objects.create( start=loc )
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "...../lib/python2.7/site-packages/mongoengine/document.py", line 267, in save
raise OperationError(message % unicode(err))
OperationError: Could not save document (geo field only has 1 element)
我不确定如何解释此错误消息,“geo field只有1个元素。”为了便于实验,我尝试将req
保存为Location
,其位置列表仅包含1个元素(或超过2个),而我得到ValidationError
。谁能解释一下发生了什么?