Question

J'ai cette mappeur défini:

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é ne sont pas mis à jour. Aussi, si un rechargement de la ligne de ressources, l'ancienne relation avec l'ancienne date est affichée, donc je suis sûr qu'il a à voir avec la comparaison de date dans le mappeur.

Si je remplace le date_fin par une chaîne de colonne de drapeau ou entier et de faire une comparaison sur le drapeau que je reçois le bon comportement, mais je ne veux utiliser dates.

Toute aide est la bienvenue.

Merci,

Lopes Richard

Était-ce utile?

La solution

Je l'ai effectivement trouvé ce qui était faux. La relation fonctionne réellement. Le problème a été résolu en mettant le date_fin à quelque chose comme datetime.now () - 1 seconde, donc il arrive avant que la ressource est en fait rafraîchi par SQLAlchemy. Une question millisecondes je suppose.

Lopes Richard

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top