Domanda

ho questo mapper definito:

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()))})

Ma per qualche ragione, se creo una nuova riga nella tabella relazione e cambiare l'end_date della vecchia riga della relazione a una vecchia data, il genitore proprietà non è aggiornato. Anche se una ricarica la linea delle risorse, viene visualizzato il vecchio rapporto con la vecchia data, quindi sono abbastanza sicuro che ha a che fare con il confronto data nel mapper.

Se si sostituisce l'end_date da una stringa colonna di bandiera o intero e fare un confronto sulla bandiera ottengo il comportamento corretto, ma io voglio date di utilizzo.

Ogni aiuto è benvenuto.

Grazie,

Richard Lopes

È stato utile?

Soluzione

Ho effettivamente trovato cosa non andava. La relazione è effettivamente lavorando. Il problema è stato risolto impostando l'end_date a qualcosa come datetime.now () - 1 secondo, così accade prima che la risorsa è in realtà rinfrescato dal SQLAlchemy. A millisecondi emettere suppongo.

Richard Lopes

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top