Я нахожусь в процессе обновления с Django 1.8.19 до 1.11.15, и я нашел фрагмент кода, который ломается.
В частности, этот запрос делает что-то отличное от того, что онделал раньше.
project_groups = brand.project_groups.prefetch_related(
'project', 'project__score', 'project__themes').filter(
project=projects
).distinct()
Ранее (в Django 1.8), согласно выводу "project_groups.query", он генерировал SQL, включая:
... projectgroup.project_id IN [projects query]
Теперь он производит чтение SQL:
... projectgroup.project_id = [projects query]
Это прерывается, поскольку [проектный запрос] возвращает более одной строки.Поэтому я получаю:
ProgrammingError: more than one row returned by a subquery used as an expression
Единственные изменения, которые я внес в код для этого обновления, касаются моделей и миграций для использования ArrayField и HStoreField из django.contrib.postgres.fields вместо django_hstore эквивалентов.
Я предполагаю, что исходный код был неправильным, но работал из-за ошибки в Django (filter / prefetch_related), которая теперь исправлена.Это может быть правильно?Если это на самом деле новая ошибка в Django, я не хочу писать код, который зависит от него!