使用Peewee ORM

时间:2015-08-06 16:31:54

标签: python orm peewee

我尝试使用Peewee ORM选择一些数据,但我对如何正确使用外键感到困惑。

我想通过Act.id选择post_title,user_name,act_title(act中的默认主键)。

所以我用这个

Post.select(Post.post_tile,User.user_name,Act.act_title).join(Act).join(User).where(Act.id==actId)

但我得到了这个: [{“post_title”:null,“user”:{},“act”:{}}]

这是我的模特:

class User(BaseModel):
    user_name = CharField(max_length=30,unique=True) 
    user_email = CharField(max_length=60,unique=True) 

class Act(BaseModel):
    user = ForeignKeyField(User, related_name='users_act_id') #foreignkey
    act_title = CharField(max_length=30)

class Post(BaseModel):
    act = ForeignKeyField(Act,related_name='acts_id') #foreignkey
    user = ForeignKeyField(User,related_name='users_post_id') #foreignkey 
    post_title = CharField(max_length=30)

1 个答案:

答案 0 :(得分:1)

如果你想加入Post表上的User和Act表,你需要在查询中添加switch,这样就可以了

Post.select(Post.post_tile,User.user_name,Act.act_title).join(Act).switch(Post).join(User).where(Act.id==actId)

虽然可能不是您正在寻找的结果,因为您在Act和Post模式中都有用户作为外键