Conversation
|
Je me demande si on ne voudrait pas |
131b220 to
3ca5899
Compare
e204ea2 to
7411608
Compare
|
J'ai rajouté le Pour les histoires de nom de champs et de DB j'ai utilisé J'en ai également profité pour tester dans
Et avec l'ajout du champs dans l'admin je pense qu'on est sur quelque chose de fusionnable la semaine prochaine. |
Cf https://github.com/django/django/blob/stable/5.1.x/django/db/models/fields/__init__.py#L937 ça me semble bien 👍 |
7411608 to
606bd8b
Compare
| ), | ||
| verbose_name="historique des champs modifiés sur le modèle", | ||
| default=list, | ||
| ) |
There was a problem hiding this comment.
nit: comme le champs n'est pas nullable, je me demande si on ne devrait pas mettre un db_default=[] pour ne pas casser la création (improbable) d'une Company pendant le déploiement ?
There was a problem hiding this comment.
Tu m'as mis le doute depuis le temps, mais django gère le truc comme il faut :
❯ ./manage.py sqlmigrate companies 0014
BEGIN;
--
-- Add field fields_history to company
--
ALTER TABLE "companies_company" ADD COLUMN "fields_history" jsonb[] DEFAULT '{}' NOT NULL;
ALTER TABLE "companies_company" ALTER COLUMN "fields_history" DROP DEFAULT;
...There was a problem hiding this comment.
Euh oui, il gère l'ajout de la colonne :)
Mais après il DROP le DEFAULT: tu as maintenant une colonne NOT NULL sans valeur par défaut.
Donc l'ancien code (qui tourne toujours après le passage de la migration), quand il va tenter un INSERT: 💥 .
Après on peut tout à fait se dire que la création d'entreprise est assez rare pour que ça n'arrive pas pendant le déploiement de cette PR.
606bd8b to
be8b7f2
Compare
be8b7f2 to
613c9a5
Compare
🤔 Pourquoi ?
.save()et pas tout à faire de la même manièreLors de l'édition dans des transactions //, le 2ème UPDATE bloque jusqu'à ce que la transaction ayant déjà fait un UPDATE soit COMMIT donc on ne devrais pas avoir de perte de données mais par contre possible qu'on crée des dead locks, à surveiller.
🏝️ Comment tester
Les tests sont normalement parlant, sinon ça fonctionne aussi via
psqlou tout autre moyen modifiant le champ ;)