SQLALCHEMY - мы можем использовать сравнение даты в определении отношения?

StackOverflow https://stackoverflow.com/questions/2384438

Вопрос

У меня определено это Mapper:

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 старой строки в отношении к старой дате, родитель свойства не обновляется. Кроме того, если перезагрузить строку ресурсов, отображается старая связь со старой датой, поэтому я уверен, что это связано с сравнением даты в Mapper.

Если я заменил end_date на строку столбца флага или целое число, и сделайте сравнение на флага, я получаю правильное поведение, но я хочу использовать даты.

Любая помощь приветствуется.

Спасибо,

Ричард Лопес

Это было полезно?

Решение

Я на самом деле нашел то, что было не так. Отношение на самом деле работает. Проблема была решена путем установки End_date к чему-то вроде datetime.now () - 1 секунду, поэтому оно происходит до того, как ресурс фактически обновляется SQLALCHEMY. Проблема миллисекунды я полагаю.

Ричард Лопес

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top