mongoengine:将EmbeddedDocuments与GeoPointField一起使用

时间:2013-01-14 21:55:06

标签: python django mongodb mongoengine

我正在为一个存储[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。谁能解释一下发生了什么?

0 个答案:

没有答案