У меня есть одна модель 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)
Так и должно быть One-One rel. где предыдущий кот указывает на следующий.
Я подготовил несколько фиктивных данных в моей таблице 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
У меня есть некоторые проблемы с разрешением направления отношений. Я также пытался указать remote_side
параметр, но все равно возникает такая же проблема.