我有一个以这种方式声明的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
参数,但仍然出现相同的问题。