Django, eines der bekanntesten Open-Source-Webframeworks, hat kürzlich die neueste Version 5.0 veröffentlicht. Diese Version bringt einige wichtige Änderungen hinsichtlich der Handhabung von Formularen mit sich.
Eine der neuen Funktionen ermöglicht es Entwicklern, Standardwerte und Feldinhalte über die Datenbank zu berechnen. Hierzu kann der neue Parameter Field.db_default verwendet werden. Dieser kann sowohl feste Werte wie Zahlen oder Strings enthalten, als auch Datenbankfunktionen wie Now(). Ein Beispiel aus den Release Notes verdeutlicht die Verwendung:
„`python
from django.db import models
from django.db.models.functions import Now, Pi
class MyModel(models.Model):
age = models.IntegerField(default=18)
created = models.DateTimeField(default=Now())
circumference = models.FloatField(default=2 * Pi())
„`
Es ist auch möglich, eine Kombination aus Literalen und Funktionen zu verwenden. Es ist jedoch nicht erlaubt, dass die Funktion zum Berechnen der Standardwerte auf andere Datenbankfelder zugreift.
Eine weitere neue Funktion ist die Verwendung von GeneratedField zur Definition einer Spalte, deren Wert aus anderen Spalten berechnet wird. Im folgenden Beispiel wird die Klasse Square gezeigt, in der die Seitenlänge (side) und die Fläche (area) berechnet werden:
„`python
from django.db import models
from django.db.models import F
class Square(models.Model):
side = models.IntegerField()
area = models.GeneratedField(
expression=F(side) * F(side),
output_field=models.BigIntegerField(),
db_persist=True,
)
„`
Im ersten Parameter wird die Berechnung definiert und im zweiten Parameter der Spaltentyp. Mit dem booleschen Parameter db_persist kann festgelegt werden, ob Django die Inhalte tatsächlich in der Datenbank speichert oder sie lediglich als virtuelle Spalte anlegt. Es liegt in der Verantwortung der Entwickler sicherzustellen, dass diese generierten Felder korrekt mit der Datenbank zusammenarbeiten, da Django die Kompatibilität nicht automatisch überprüft.
Die Dokumentation enthält Informationen zur Verwendung von generierten Spalten in verschiedenen Datenbanken wie MariaDB, MySQL, Oracle, PostgreSQL und SQLite.
Eine weitere Verbesserung in Django 5.0 betrifft die Handhabung von Formularfeldern. Durch die Verwendung von Feldgruppen können alle zugehörigen Elemente wie Label, Widget, Hilfetext und Fehlermeldungen zusammengefasst werden. Die Funktion as_field_group() nutzt eine Vorlage zur Darstellung und kann auf Projektebene oder direkt auf Feldebene angepasst werden.
Außerdem bietet Django 5.0 erweiterte Auswahlmöglichkeiten für Field.choices und ChoiceField.choices. Diese ermöglichen nun auch die Verwendung von Mappings und Rückgabewerten von Funktionsaufrufen.
Parallel zur Veröffentlichung von Django 5.0 wurde auch das letzte reguläre Bugfix-Release der 4er-Serie von Django veröffentlicht. Django 4.2.8 ist ein LTS-Release (Long-term Support) und wird bis April 2026 weiterhin mit Fixes versorgt, um Sicherheitslücken und Datenverluste zu beheben.
Schlagwörter: Django 50 + Formulare + Feldgruppen
Wie bewerten Sie den Schreibstil des Artikels?