среда, 30 октября 2019 г.

Raw query must include the primary key

Как и любое достижение прогресса ORM-ы в каких-то кейсах хороши и удобны, а в некоторые моменты - раздражают. Например, когда речь о Django и случае, когда ты хочеш выполнить raw-запрос с группировкой ( чтобы не париться с нечевидными annotate и импортом нужных агрегатных функций ) . Пример:
r = CourseStudent.objects.raw("select course_id, count(*) as c from coursestudent group by course_id order by c")
В ответ мы видим:
Raw query must include the primary key
WTF? Как я вам воткну pk в запрос с группировкой по произвольному ключу ? К счастью, обойти просто - вот такой запрос спокойно отработает:
r = CourseStudent.objects.raw("select course_id as id, count(*) as c from coursestudent group by course_id order by c")
- мы немного схимичили, и навесили на произвольный ключ alias, такой же как pk таблицы, к которой мы делаем наш произвольный запрос

вторник, 29 октября 2019 г.

Migration is applied before its dependency on database

Разбираемся с ошибкой
Migration B is applied before its dependency A on database
Django version 1.11 Поселектив табличку %%django_migrations%% можно выяснить точную хронологию применения миграций и дальше выправить ее руками. Автоматически такое разрулить, по-видимому, не выйдет.