Choices mit Constraints überwachen
Django-Constraints können auf einfache Weise genutzt werden, um Choices durchzusetzen:
check=models.Q(status__in=Status.values), …
Django-Constraints können auf einfache Weise genutzt werden, um Choices durchzusetzen:
check=models.Q(status__in=Status.values), …
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.
Mit verschachtelte Subqueries in Django lassen sich (n*m+1)-Schleifen vermeiden.
Besonders interessant in diesem Artikel:
ArraySubquery (für PostgreSQL)
Annotation mit JSONObject (um die Ergebnisse der Subquery abzulegen)
through.objects-Filter
OuterRef-Abfrage
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.
Django-tasks ist die Referenzimplementation für asynchrone Hintergrundabarbeitung im Django-Pojekt (siehe DEP0014).
Als Backends zur Speicherung der Aufträge unterstützt es bisher den Django-ORM sowie eine Dummy-Implementation und die sofortige Ausführung (fürs Testen).
Statisches Type-Checking ist mit django-tasks gut möglich.
uvicorn unterstützt nun mehrere Prozesse (mit Hilfe eines neuen Multiprozessmanagers) und macht gunicorn somit entbehrlich.
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.)
Wie man eine SQLite-Datenbank für Django tunen kann, beschreibt dieser Artikel.
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.
Seit langem (seit rund 6 Jahren) gibt es wieder eine neue Version von LyX – mit zahlreichen Änderungen, u. a. einer Umstellung auf UTF-8.