說我有這樣的文件:添加點播領域的文檔
from mongoengine import Document, EmbeddedDocument, fields
import datetime
class EmbeddedColumn(EmbeddedDocument):
created = fields.DateTimeField(default=datetime.datetime.now)
class Dattum(Document):
datasource_id = fields.IntField(required=True)
date_modified = fields.DateTimeField(default=datetime.datetime.now)
point = fields.GeoPointField()
columns = fields.ListField(fields.EmbeddedDocumentField(EmbeddedColumn))
在運行時,我需要根據一系列查詢的一些字段添加到某些情況下:
for row in csv_attach:
dato = Dattum(datasource_id=datasource.pk)
for column in columns:
col_dict = model_to_dict(column)
col_dict.pop('id')
ecol = EmbeddedColumn(**col_dict)
dato.columns.append(ecol)
if ecol.geodata_type=='point':
local_search = gmaps.local_search('%s %s' %(ecol.value, region))
results = local_search['responseData']['results']
result_len =
if len(results) == 1:
result = results[0]
#dato.point(result['lat'], result['lng'])
dato.geojson = geojson.Point(dato.point)
dato.save()
當我檢索一些Dattum,我發現它有適當的列,但沒有列有model_to_dict(column)
的字段,dato沒有屬性geojson。
可能是我對mongoengine要求太多的魔法,可能是有一個正確的方法來解決這個問題。 任何指針?
Mongoengine有一個'DictField',你可以在其中存儲任何你想要的東西。儘管如此,您必須將其作爲字典訪問,並帶有方括號。 – dcrosta
我不明白你的意思是「分組領域」 – dcrosta