Date de sortie : 22 septembre 2022
Documentation officielle : DRF 3.14 Announcement
DRF 3.14 met à jour la compatibilité Django et corrige quelques incohérences. Attention au changement de comportement sur les permissions OR — si vous les utilisez, lisez attentivement les notes de migration.
Les nouveautés principales
Support de Django 4.1
DRF 3.14 supporte pleinement Django 4.1 et abandonne le support de Django 2.2.
raise_exception devient keyword-only
L’argument raise_exception de is_valid() doit maintenant être passé par nom :
# Avant (déprécié) serializer.is_valid(True) # Après serializer.is_valid(raise_exception=True)
Changement de sémantique pour OR sur les permissions
Le comportement de | (OR) entre permissions a changé :
# Avant : retournait True si une permission retournait True
# Après : retourne True seulement si aucune ne retourne False explicitement
class IsOwnerOrReadOnly(permissions.BasePermission):
def has_permission(self, request, view):
if request.method in permissions.SAFE_METHODS:
return True
return False # Ceci bloque maintenant le OR
ManyRelatedField avec source manquante
ManyRelatedField supporte maintenant le retour d’une valeur par défaut quand l’attribut source n’existe pas :
class UserSerializer(serializers.ModelSerializer):
roles = serializers.SlugRelatedField(
many=True,
read_only=True,
slug_field='name',
default=[] # Retourné si 'roles' n'existe pas
)
API get_reference publique
La méthode pour obtenir une référence OpenAPI est maintenant publique :
from rest_framework.schemas.openapi import AutoSchema schema = AutoSchema() ref = schema.get_reference(serializer)
Suppression de NullBooleanField
NullBooleanField est définitivement supprimé. Migrez vers BooleanField(allow_null=True).
e
Échanger avec un expert Django
Nous revenons vers vous sous 24h.
Chez Makersquad, nous accompagnons nos clients dans la conception d’application modernes et performantes avec Django .Que vous souhaitiez lancer une nouvelle API, moderniser une architecture existante ou améliorer les performances de vos services backend, notre équipe met son expertise à votre disposition pour concevoir des solutions fiables, rapides et parfaitement adaptées à vos enjeux métier.
À retenir
Cette release est surtout une mise à niveau de compatibilité. Le changement sur les permissions OR peut casser du code existant — vérifiez vos classes de permission si vous utilisez l’opérateur |.