Opened 9 years ago
Closed 9 years ago
#27169 closed Bug (invalid)
adding a field to a model with default value in postgres, when is migrated drop the default
| Reported by: | rodo | Owned by: | nobody |
|---|---|---|---|
| Component: | Migrations | Version: | 1.10 |
| Severity: | Normal | Keywords: | tutorial, model |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
When I was studying the tutorial, I forgot the field "vote" in the model Choise, so I defined later and done a new migration:
(the development is in spanish)
class Eleccion(models.Model):
pregunta = models.ForeignKey(Pregunta, on_delete=models.CASCADE)
eleccion_text = models.CharField(max_length=200)
votos = models.IntegerField(default=0) <=== new field
These are the log of the migration:
python manage.py makemigrations encuestas
Migrations for 'encuestas':
encuestas\migrations\0002_eleccion_votos.py:
- Add field votos to eleccion
python manage.py sqlmigrate encuestas 0002
BEGIN;
--
-- Add field votos to eleccion
--
ALTER TABLE "encuestas_eleccion" ADD COLUMN "votos" integer DEFAULT 0 NOT NULL;
ALTER TABLE "encuestas_eleccion" ALTER COLUMN "votos" DROP DEFAULT; <=== ???
COMMIT;
python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, encuestas, sessions
Running migrations:
Rendering model states... DONE
Applying encuestas.0002_eleccion_votos... OK
This is the final table:
CREATE TABLE encuestas.encuestas_eleccion
(
id serial NOT NULL,
eleccion_text character varying(200) NOT NULL,
pregunta_id integer NOT NULL,
votos integer NOT NULL, <=== it has not default value
CONSTRAINT encuestas_eleccion_pkey PRIMARY KEY (id),
CONSTRAINT encuestas_eleccio_pregunta_id_9558286d_fk_encuestas_pregunta_id FOREIGN KEY (pregunta_id)
REFERENCES encuestas.encuestas_pregunta (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION DEFERRABLE INITIALLY DEFERRED
)
Change History (1)
comment:1 by , 9 years ago
| Component: | Uncategorized → Migrations |
|---|---|
| Resolution: | → invalid |
| Status: | new → closed |
| Type: | Uncategorized → Bug |
Note:
See TracTickets
for help on using tickets.
That's correct, Django doesn't use database defaults except to set values on existing database rows.