0

私はこの文書を持っていると言います:

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)がなく、データには属性 geojson がありません。

mongoengine にあまりにも多くの魔法を要求している可能性があります。これに取り組む適切な方法があるかもしれません。ポインターはありますか?

4

2 に答える 2

2

私はdcrostaに同意します-EmbeddedDocumentの代わりにDictFieldを使用します-EmbeddedFieldと同じように、データの柔軟なストアを取得することを除いて、作成日の検証はありません。

于 2011-09-09T12:56:32.477 に答える
1

この機能は、mongoengine ではまだ利用できません。githubでこの問題について議論があるようですが

于 2011-09-08T13:28:05.857 に答える