2015-04-07 12 views
18

Sto provando a interrogare il mio database. Alcuni record hanno attualmente campi aggiuntivi che non sono inclusi nello schema del mio modello (per errore, ma voglio trattare questi casi). Quando provo ad interrogare il DB e trasformare le registrazioni nello schema, ottengo il seguente errore:mongoengine - Ignora campi aggiuntivi per la convalida dello schema

FieldDoesNotExist 
The field 'X' does not exist on the document 'Y' 

A causa dei campi aggiuntivi nel database che differiscono dallo schema.

C'è un modo per ignorare questa convalida dello schema per campi aggiuntivi in ​​mongoengine?

risposta

22

Per ignorare questo errore quando avere campi extra durante il caricamento dei dati, impostare strict-False nel dizionario meta.

class User(Document): 
    email = StringField(required=True, unique=True) 
    password = StringField() 
    meta = {'strict': False} 
+0

Riferimenti: https://mongoengine-odm.readthedocs.io/apireference.html#mongoengine.Document https://mongoengine-odm.readthedocs.io/apireference.html#mongoengine.FieldDoesNotExist – Wtower

1

Penso che si desidera saltare convalida dello schema, in modo che quando si salva il documento

document_name.save(validate=False) 
+1

Ehi, grazie per la risposta! Funzionerebbe, ma mi piacerebbe comunque che i campi del mio schema venissero convalidati, ma voglio anche ignorare tutti i campi extra che vengono restituiti nei miei archivi. Il metodo ovvio è usare l'unico() su tutti i miei campi, ma non è molto bello. – Andrew

3

Credo che si desidera utilizzare un DynamicDocument al posto di un documento al momento di definire il proprio modello e che permetterà campi aggiuntivi nel db schema da ignorare.

Problemi correlati