MongoEngine не видит ранее существующие записи - PullRequest
3 голосов
/ 04 февраля 2012

Я настроил свою модель в MongoEngine и попытался запросить ее (у меня уже есть несколько десятков документов в моей коллекции), но набор запросов пуст:

>>> mymodel.objects
[]

Я могу добавить новые документы,и они появляются в последующих запросах, но есть признаки моих ранее существующих документов:

>>> thingy = mymodel(a=2, b=3)
>>> thingy.save()
>>> mymodel.objects
[<mymodel: mymodel object>]

Что дает?Для справки, вот мое определение модели:

from django.conf import settings
from mongoengine import *

connect(settings.MONGO_DATABASE, 
        host=settings.MONGO_HOST, port=settings.MONGO_PORT)

class metadata(Document):

    meta = {'collection': 'metadata'}

    _id   = StringField()
    name  = StringField()
    _type = StringField()
    terms = ListField()
    level = StringField()
    abbreviation  = StringField()
    latest_update = DateTimeField()
    feature_flags = ListField()
    session_details  = DictField()
    legislature_name = StringField()
    lower_chamber_name = StringField()
    upper_chamber_term = IntField()
    upper_chamber_name = StringField()
    lower_chamber_term = IntField()
    lower_chamber_title = StringField()
    upper_chamber_title = StringField()
    _ignored_scraped_sessions = ListField()

Если на этот вопрос ответит сам автор MongoEngine, я хочу заранее сказать, что ВЫ УДИВИТЕЛЬНЫ!

1 Ответ

1 голос
/ 04 февраля 2012

Неважно, документы ответят на мой вопрос:

Чтобы использовать MongoEngine с существующими данными, вы должны установить allow_inheritance = False в определении модели, поскольку инструменты наследования MongoEngine устанавливают дополнительные атрибуты в ваших документах (_cls и _types), а затем (очевидно) используют их для фильтрации запросов MongoEngine. Другим вариантом может быть добавление этих атрибутов в существующие документы.

http://docs.mongoengine.org/guide/defining-documents.html

...