Je possède ce mappeur défini:Sqlalchemy - Pouvons-nous utiliser la comparaison de date dans la définition de la relation?
mapper(Resource, resource_table,
properties = {'type' : relation(ResourceType,lazy = False),
'groups' : relation(Group, secondary = model.tables['resource_group'],
backref = 'resources'),
'parent' : relation(Relation, uselist=False, primaryjoin =
and_(relation_table.c.res_id == resource_table.c.res_id,
relation_table.c.end_date > datetime.now())),
'children' : relation(Relation, primaryjoin =
and_(relation_table.c.parent_id == resource_table.c.res_id,
relation_table.c.end_date > func.now()))})
Mais pour une raison quelconque, si je crée une nouvelle ligne dans la table de relation et changer la date_fin de l'ancienne ligne dans la relation à une date ancienne, le parent de la propriété est pas à jour. Aussi, si un rechargement de la ligne de ressources, l'ancienne relation avec l'ancienne date est affichée, donc je suis assez sûr que cela a à voir avec la comparaison de date dans le mappeur.
Si je remplace le paramètre end_date par une chaîne de colonne d'indicateur ou un entier et que je fais une comparaison sur l'indicateur, j'obtiens le comportement approprié, mais je souhaite utiliser des dates.
Toute aide est la bienvenue.
Merci,
Lopes Richard
En fait, si le code que vous exécutez prend plus de 1 seconde, cette solution n'est pas assez fiable. Donc, à vous de mettre plus de temps, ou compter sur un drapeau booléen sur le end_date qui est l'option la plus sûre. –