2015-04-07 30 views
18

Veritabanımı sorgulamaya çalışıyorum. Bazı kayıtlarda şu anda model şemamda bulunmayan fazladan alanlar var (hatayla, ancak bu durumları ele almak istiyorum). Çünkü şema farklı veritabanında ekstra alanlarınmongoengine - Şema doğrulaması için ek alanları yoksay

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

: Ben DB sorgulamak ve şemasına kayıtları dönüştürmeye çalıştığınızda, aşağıdaki hatayı alıyorum.

Mongoengine'deki ek alanlar için bu şema doğrulamasını göz ardı etmenin bir yolu var mı?

cevap

22

.

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

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

1

Sana şema doğrulama atlamak istediğini düşünüyorum, böylece doküman kaydederken İnanıyorum

document_name.save(validate=False) 
+1

Hey, cevabınız için teşekkürler! Bu işe yarar ancak şemadaki alanların doğrulanmasını isterim, ayrıca kayıtlarma geri gönderilen ekstra alanları da göz ardı etmek istiyorum. Açık olan yöntem, tüm alanlarımda yalnızca() kullanmaktır, ancak bu çok hoş değildir. – Andrew

3

modelinizi tanımlarken bir Belgesinin yerine DynamicDocument kullanmak istiyorum ve bu db ekstra alanları sağlayacak Şema göz ardı edilecek. veri yükleme, meta sözlükte False için strict set ise ekstra arazisi bulunan bu hatayı görmezden için