一对一自我推荐-映射顺序错误

时间:2018-11-08 08:07:47

标签: python postgresql sqlalchemy

我有一个以这种方式声明的sqlalchemy模型:

class Cat(BaseModel):  # BaseModel declares id and uuid field, also renames table to 'cats'
    name = db.Column(db.String(256))
    color= db.Column(db.String(256))

    next_cat_id = db.Column(db.Integer(), db.ForeignKey('cats.id'))
    next_cat = db.relationship("Cat", uselist=False)

所以应该一对一。前一只猫指向下一只。 我在postgres表中准备了一些虚拟数据:

id  next_cat_id 
1   2
2   3
3   4
4   5
5   Null

当我尝试获取下一只猫的对象时出现问题:

cat = Cat.query.filter_by(id=5).first()  # Gives cat with id=5 (OK)
> cat.next_cat_id  # Gives None (OK)
> cat.next_cat  # Gives cat with id=4 instead of None 

我认为sqlalchemy在解决关系方向时遇到一些麻烦。我也尝试指定remote_side参数,但仍然出现相同的问题。

0 个答案:

没有答案