Je suis capable d'utiliser la fonction inspect de sqlalchemy pour trouver l'historique d'un modèle spécifique, pour toute valeur normale. Cependant, lorsque je tente d'obtenir l'historique d'une relation (ou de la colonne ForeignKey qui lui est associée), seule la nouvelle valeur est affichée, et non la valeur précédente.
Existe-t-il un moyen rapide d'obtenir la valeur précédente d'une relation comme celle-ci, ou dois-je utiliser une autre fonction ou créer ma propre fonction ?
Le code de base que j'utilise ressemble à
class Person(db.Model):
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(80))
phone_id = db.Column(db.Integer(), db.ForeignKey("phone_number.id"))
phone = db.relationship("PhoneNumber")
class PhoneNumber(db.Model):
id = db.Column(db.Integer(), primary_key = True)
type = db.Column(db.String(20))
number = db.Column(db.String(11))
p = Person()
p.name = "Frank"
phone1 = PhoneNumber("Mobile", "1234567890") #__init__ function handles these args
phone2 = PhoneNumber("Home", "9876543210")
p.phone = phone1
db.session.add_all([p, phone1, phone2])
db.session.commit()
p.phone = phone2
history = db.inspect(p).attrs.get("phone").history
# history is sqlalchemy.orm.attributes.History(([<PhoneNumber('Home', '9876543210')>], (), ()))
# history.added is ([<PhoneNumber('Home', '9876543210')>])
# history.deleted is () but should be ([<PhoneNumber('Mobile', '1234567890')>])