Bug #55959
base_adresse: lier les City/Region/DepartmentModel à la resource
0%
Description
Sur les modèles CityModel, RegionModel et DepartementModel on a le même soucis qu'avec StreetModel pour #55950 : il manque un lien vers la ressource (l'instance de connecteur) concernée.
Fichiers
Révisions associées
Historique
Mis à jour par Thomas Noël il y a plus de 2 ans
- Fichier 0001-base_adresse-link-data-models-to-BaseAdresse-instanc.patch 0001-base_adresse-link-data-models-to-BaseAdresse-instanc.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
et toute honte bue, on n'oublie pas non plus le cache AddressCacheModel
Mis à jour par Thomas Noël il y a plus de 2 ans
- Statut changé de Solution proposée à En cours
Je dois revoir ma copie.
django.db.utils.IntegrityError: ERREUR: la valeur d'une clé dupliquée rompt la contrainte unique « base_adresse_regionmodel_code_key » DETAIL: La clé « (code)=(01) » existe déjà.
Mis à jour par Valentin Deniaud il y a plus de 2 ans
Éventuellement mettre un related_name
sympa, histoire d'avoir self.cities
plutôt que self.citymodel_set
? (si oui, à faire aussi dans #55950)
Mis à jour par Thomas Noël il y a plus de 2 ans
Valentin Deniaud a écrit :
Éventuellement mettre un
related_name
sympa, histoire d'avoirself.cities
plutôt queself.citymodel_set
? (si oui, à faire aussi dans #55950)
Ah ben oui mais en fait ça va pas aller parce qu'on a déjà des endpoints nommés self.regions, self.departments, ... et donc trouver autre chose que "regions" pour le related_name je vois pas, autant garder le model regionmodel_set.
(le patch arrive, par ailleurs)
Mis à jour par Thomas Noël il y a plus de 2 ans
- Fichier 0001-base_adresse-link-data-models-to-BaseAdresse-instanc.patch 0001-base_adresse-link-data-models-to-BaseAdresse-instanc.patch ajouté
- Statut changé de En cours à Solution proposée
- j'ajoute un clé distante vers BaseAdresse, avec null=True,default=None pour migrer sans se poser de question
- quand il y avait un unique, il change et devient un unique_together(resource, ...)
- je mets l'id de la 1ère instance BAN trouvé dans la clé distante
- je supprime alors le null=True,default=None qui n'a plus de raison d'être
pour les quatre modèles.
Le code est bateau par ailleurs.
Mis à jour par Valentin Deniaud il y a plus de 2 ans
À mon avis c'est une migration à faire en plusieurs fois, cf « Thus, on PostgreSQL, for example, you should avoid combining schema changes and RunPython operations in the same migration » https://docs.djangoproject.com/en/3.2/ref/migration-operations/#django.db.migrations.operations.RunPython.
La dernière fois qu'on s'est mangé des erreurs à cause de ça c'est #54969...
Mis à jour par Thomas Noël il y a plus de 2 ans
- Fichier 0001-base_adresse-link-data-models-to-BaseAdresse-instanc.patch 0001-base_adresse-link-data-models-to-BaseAdresse-instanc.patch ajouté
Voici donc, le même code mais la migration décomposée en 3 étapes.
Mis à jour par Serghei Mihai il y a plus de 2 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Thomas Noël il y a plus de 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 636b595833f5c7eadbb434f7aa1e116ee1709c7a Author: Thomas NOËL <tnoel@entrouvert.com> Date: Tue Aug 3 20:44:46 2021 +0200 base_adresse: link data models to BaseAdresse instance (#55959)
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
base_adresse: link data models to BaseAdresse instance (#55959)