2014-04-21 120 views
-1

使用db模型获取此错误。任何想法可能是什么问题?Python烧瓶上的外键

InvalidRequestError: When initializing mapper Mapper|Stand|stand, expression 'Stand.item_code_name==item_id' failed to locate a name ("name 'item_id' is not defined"). If this is a class name, consider adding this relationship() to the <class 'app.models.Stand'> class after both dependent classes have been defined. 


class Stand(db.Model): 
    stand_id = db.Column(db.String(10), primary_key = True) 
    stand_name = db.Column(db.String(24), index = True, unique = True) 
    item_code_name =db.Column(db.String, db.ForeignKey('item_codes.item_id')) 
    item_codes= db.relationship('Item_codes', primaryjoin = "Stand.item_code_name==item_id") 


class Item_codes(db.Model): 
    item_id = db.Column(db.String(10), primary_key = True) 
    item_name = db.Column(db.String(100), index = True, unique = True) 
    combi = db.Column(db.String(140)) 
+0

请问清楚。 – emeth

+0

您必须在声明主要联接的同时提及该模型。试试这个 - 'primaryjoin =“Stand.item_code_name == Item_codes.item_id”'。 – vivekagr

回答

1

映射器需要知道要加入的模型。

class Stand(db.Model): 
    stand_id = db.Column(db.String(10), primary_key=True) 
    stand_name = db.Column(db.String(24), index=True, unique=True) 
    item_code_name = db.Column(db.String, db.ForeignKey('item_codes.item_id')) 
    item_codes = db.relationship('Item_codes', primaryjoin="Stand.item_code_name==Item_codes.item_id") 

我还建议你打电话给Stand.item_code_id(或者其他的东西)。与_name我希望它加入Item_code.item_name