Bonjour à tous,
Je dispose d’un site sur Django tournant depuis quelques années, et les modèles ont évolué (comprendre grossi) au fur et à mesure.
Ce site gère des tournois, de trois sortes (individuel, en équipe, et en 2v2). Ils sont représentés par quatres modèles : Tournament
(modèle abstrait), SoloTournament
, SideBySideTournament
, TeamTournament
, qui héritent tous de la classe abstraite et sont eux des modèles concrets.
J’ai donc trois tables distinctes en BDD.
Sauf qu’aujourd’hui, je me rends compte qu’il serait mieux d’avoir une classe concrète Tournament
qui regrouperait toutes les informations communes. Cela me permettrait aussi de regrouper de manière visuelles les trois types de tournois (pour l’instant, par exemple, impossible de filtrer/trier sur les trois classes d’un coup).
Mon problème pour faire cela est double (malheureusement, il ne s’agit pas simplement d’enlever abstract = True
) :
- Comment migrer les anciens modèles vers les nouveaux (pas besoin de conserver les clés primaires, j’ai des slugs qui sont pour le coup uniques d’un modèle à l’autre) ?
- Ces modèles ont des entités liées en ManyToOne, comment faire pour conserver les relations aussi ?
La réponse me semble être "prends ton courage à deux mains et écris les migrations" (ce qui me semble en effet une tâche longue et complexe), mais peut-être y a-t-il des solutions plus simples, c’est pourquoi je me tourne vers vous
Merci !