Sqlalchemy - Можем ли мы использовать сравнение дат в определении отношений? - PullRequest
0 голосов
/ 05 марта 2010

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

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

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

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

Спасибо,

РичардLopes

1 Ответ

0 голосов
/ 05 марта 2010

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

Ричард Лопес

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...