Django Сгенерированный ORM запрос не ожидается - PullRequest
0 голосов
/ 09 апреля 2020

Вопрос des c

  1. Выполнить запрос по django orm
test_result = table1.objects.filter(q_filter).values(*groupby_columns).annotate(**{d: Sum(d) for d in data_columns})
Получил ошибку
Unknown column 'table2.column1' in 'field list'
Это странно, потому что я выполняю запрос на модели table1, но получил ошибку на модели table2

Отладка

  1. print sql
print(test_result.query)

Я получил это:

SELECT `table1`.`column1`, `table1`.`column2`, SUM(`table1`.`data`) AS `data` FROM `table2` WHERE (`table1`.`column3` = 4 AND `table1`.`column4` = 0 AND `table1`.`column1` >= 2020-04-01 AND `table1`.`column1` <= 2020-04-08) GROUP BY `table1`.`column1`, `table1`.`column2` ORDER BY NULL;

Я не уверен, есть ли кэш в django orm, и он записывает условие запроса, которое я выполняю в прошлый раз, поэтому вызовите эту ошибку.

Это часто случается, но восстанавливается после перезапуска службы.

Env

  • Python3 .6.9
  • Django2.0.2
  • Mysql5.6

Кто-нибудь сталкивался с этой проблемой. Пожалуйста, говорите

Дополнительно

table1 & table2 имеют одинаковую структуру и одинаковые логики orm c

...