TGViewer
Zen of Python Zen of Python @zen_of_python · 18.8K subscribers
Post #5020 474
Как запускать собственный SQL через миграции Django

У models.Index нашлось необычное применение: его подкласс можно добавить в Meta.indexes, чтобы Django включил объект в автоматически созданную миграцию. При её выполнении фреймворк получит SQL из методов create_sql и remove_sql. Так к схеме таблицы можно привязать, например, комментарии или триггеры.

В django-security-label этот механизм задаёт правила анонимизации PostgreSQL прямо рядом с полями модели. Когда модель меняется, система миграций добавляет или удаляет соответствующие метки в схеме. Получается явно и рядом с предметной моделью, хотя автор прямо называет приём хаком.

Разбор механизма и пример с анонимизацией помогут оценить границы подхода. SQL из упрощённого примера копировать нельзя: он не экранирован должным образом.
More from @zen_of_python
  1. Sep 27, 2026Как разделить синхронный и асинхронный Python-клиенты При переписывании akismet автор отка…
  2. Sep 27, 2026Как заменить цепочку isinstance на singledispatch Когда обработка типов разрастается, цепо…
  3. Sep 26, 2026Как собирать динамические фильтры Django через Q-объекты Q() представляет условие для SQL-…
  4. Sep 26, 2026Почему str.splitlines() видит больше переносов, чем чтение файла У Python два разных понят…
  5. Sep 26, 2026Как вручную разрешить ленивый импорт в Python У объекта, созданного через lazy import json…
  6. Sep 25, 2026Почему Python предупреждает о последовательности \477 и как это исправить В строках Python…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →