Sérialiseur Evenement

Module contenant le sérialiseur pour le modèle Evenement.

Ce module définit la sérialisation/désérialisation des données des événements sportifs pour l’API REST, incluant la gestion des relations avec les épreuves et lieux.

class api.serializers.evenement.EvenementSerializer(*args, **kwargs)

Bases : ModelSerializer

Sérialiseur pour le modèle Evenement.

Gère la sérialisation des événements avec leurs relations aux épreuves et lieux. Permet l’assignation d’épreuves à un événement tout en évitant les conflits.

Variables:
  • epreuves – Liste des épreuves associées (lecture seule)

  • epreuve_ids – IDs des épreuves à associer (écriture seule)

  • lieu – Données complètes du lieu (lecture seule)

  • lieu_id – ID du lieu pour l’écriture

class Meta

Bases : object

Configuration du sérialiseur.

Variables:
  • model – Modèle Django associé au sérialiseur

  • fields – Champs inclus dans la sérialisation

model

alias de Evenement

fields = ['id', 'description', 'lieu', 'lieu_id', 'date', 'horraire', 'epreuves', 'epreuve_ids', 'nb_place_total', 'nb_place_restante']
validate_epreuve_ids(value)

Valide les IDs des épreuves à associer à l’événement.

Vérifie qu’aucune épreuve n’est déjà assignée à un autre événement pour éviter les conflits d’assignation.

Paramètres:

value (list of Epreuve) – Liste des épreuves à valider

Renvoie:

Liste des épreuves validées

Type renvoyé:

list of Epreuve

Lève:

serializers.ValidationError – Si des épreuves sont déjà assignées ailleurs

create(validated_data)

Crée un nouvel événement avec ses épreuves associées.

Paramètres:

validated_data (dict) – Données validées pour la création

Renvoie:

L’événement créé avec ses épreuves assignées

Type renvoyé:

Evenement

update(instance, validated_data)

Met à jour un événement et gère les épreuves associées.

Désassocie les anciennes épreuves et assigne les nouvelles si présentes.

Renvoie:

L’événement mis à jour

*Fonctionnalités avancées*

  • Relations optimisées : Affichage complet du lieu et des épreuves

  • Champs séparés lecture/écriture pour les clés étrangères

  • Validation des conflits : Évite l’assignation d’épreuves déjà utilisées

  • Gestion transactionnelle : Mise à jour cohérente des relations

*Validations spéciales*

La méthode validate_epreuve_ids() vérifie qu’aucune épreuve n’est déjà assignée à un autre événement.