2017-10-18 9 views
0

mongoengine属性エラーを関数内でフィールドを参照する - 以下のコードの属性エラーに実行するのpython

from mongoengine import * 
import datetime 
from bson import ObjectId 



class Doc_1(EmbeddedDocument): 
    criteria_id = ObjectIdField(default=ObjectId) 
    field_name = StringField() 
    field_value =DynamicField() 
    dominant = BooleanField() 

class Doc_2(Document): 
    created_date = DateTimeField(default=datetime.datetime.now) 
    type = StringField(required=True) 
    state = StringField(required=True) 

d1 = Doc_1() 
d1.field_name = "state" 
d1.field_value = [a, b, c, d, e] 
d1.save() 

d2 = Doc_2() 
d2.type = "Demo" 
d2.state = "c" 
d2.save() 

def field_match(Doc_1, Doc_2): 
    x = Doc_1.field_name 
    y = Doc_1.field_value 
    if Doc_2.x in y: 
     print("Yes") 

field_match(Doc_1, Doc_2) 

はAttributeError:「Doc_2」オブジェクトが属性を持っていない「X」

私はどのようにmongoengineで関数内の変数を適切に使用しますか?

+1

この質問は、「関数内で変数を使用する」とは関係ありません。 –

答えて

0

私は少し恥ずかしいので、単純な答え...

機能がない変数の周りかっこを使用する必要があります「」

def field_match(Doc_1, Doc_2): 
x = Doc_1.field_name 
y = Doc_1.field_value 
if Doc_2[x] in y: 
    print("Yes")