Opened 3 days ago
Last modified 2 days ago
#36016 assigned Cleanup/optimization
Avoid traceback when quitting makemigrations with Ctrl-C — at Version 2
Reported by: | Adam Johnson | Owned by: | |
---|---|---|---|
Component: | Migrations | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | yes | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
Sometimes makemigration
asks you questions with its “questioner”. If you realize that you missed something due to these questions, you might want to quit with Ctrl-C and edit your models file before rerunning.
Currently, such a quit triggers Python’s default traceback:
$ ./manage.py makemigrations example It is impossible to add a non-nullable field 'title' to book without specifying a default. This is because the database needs something to populate existing rows. Please select a fix: 1) Provide a one-off default now (will be set on all existing rows with a null value for this column) 2) Quit and manually define a default value in models.py. Select an option: ^CTraceback (most recent call last): File "/.../manage.py", line 21, in <module> main() ~~~~^^ ... ... ... File "/.../django/db/migrations/questioner.py", line 169, in ask_not_null_addition choice = self._choice_input( f"It is impossible to add a non-nullable field '{field_name}' " ...<10 lines>... ], ) File "/Users/chainz/tmp/django-makemigrations-ctrl-c/.venv/lib/python3.13/site-packages/django/db/migrations/questioner.py", line 114, in _choice_input result = input() KeyboardInterrupt
This isn’t very user-friendly: it seems like maybe you broke Django, and it pushes the question up out of the terminal window.
Instead, we could quit with a nice message, perhaps something like:
Select an option: ^C Cancelled, no migration file for app 'example' written.
The message needs to be clear in the case that makemigrations
generates migration files for some apps but is then quit.
It should probably use the notice style.
Change History (2)
comment:1 by , 3 days ago
Description: | modified (diff) |
---|
comment:2 by , 3 days ago
Description: | modified (diff) |
---|