Model inheritance vermeiden, Constraints verwenden

Eine Anregung: Ähnliche Django-Models sollte man besser nicht durch Vererbung (model inheritance) ableiten von einem abstrakten Parent-Model, sondern in ein und demselben Model unterbringen und die Varianten per Constraints voneinander isolieren. Dabei ist es nützlich, mehrere zugehörige Abfragen in einem einzigen Constraint per Oder zu verknüpfen.

Das unterschiedliche Verhalten der Varianten kann über Proxy-Modelle realisiert werden. Diese ermöglichen es, bei gleichartiger Struktur in der Datenbank den Objekten im Programm über spezifische Methoden ein unterschiedliches Verhalten zu geben.

Proxy-Modelle können übrigens gut verwendet werden, um unterschiedliche Sortierungen zu realisieren. Damit lassen sich (eventuell „teure“) Sortierungen vermeiden, wenn man sie nicht braucht.

Django 5.1

Django 5.1 – was ist an Neuerungen zu beachten?

  • Für PostgreSQL können in den Settings Connection pools eingestellt werden.

  • LoginRequiredMiddleware kann als Voreinstellung für alle Views das Login verlangen; mit einem neuen Decorator @login_not_required kann davon abgewichen werden.

  • Für ein SQLite-Backend können per init_command Pragma-Optionen gesetzt werden.

  • Unterstützt kein PostgreSQL 12 mehr.

  • CheckConstraint: check ist umbenannt in condition.

Fehlen Django-Migrationen?

Habe ich bei einer Django-Anwendung vergessen, Migrationen zu erzeugen? Mit

./manage.py makemigrations --dry-run --check

lässt sich das überprüfen und per Returncode auswerten (z. B. auch in Tests oder CI-Checks). (Aus einem Blogpost.)

Starlark: ein stark abgespecktes Python

Starlark ist eine „embeddable“ Programmiersprache (etwa für Konfigurationen größerer Programme), also eine Alternative zu Lua.

Es handelt sich um einen (stark abgespeckten) Dialekt von Python, der nicht nur auf Einfachheit, sondern auch auf Determiniertheit ausgerichtet ist.

Es gibt Implementierungen in Java, Rust und Go. Weitere Infos finden sich auf der GitHub-Projektseite.