我此映射器定义:

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

但由于某些原因,如果我创建的关系表一个新行,改变旧的行中的关系的END_DATE到旧日期,物业父不更新。 此外,如果一个重载的资源栏,将显示与旧日期的老关系,所以我敢肯定它与映射器中的日期做对比。

如果我用标志列,字符串或整数更换END_DATE和做标记的比较获得正确的行为,但我确实想使用的日期。

任何帮助是受欢迎的。

谢谢,

理查德Lopes的

有帮助吗?

解决方案

其实我已经发现了什么是错误的。 的关系实际工作。 这个问题是由END_DATE设置为()类似datetime.now解决 - 1秒,所以在它发生之前的资源实际上是由SQLAlchemy的刷新。 甲毫秒发出我想。

理查德Lopes的

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top