mirror of
https://github.com/django/django.git
synced 2024-12-22 17:16:24 +00:00
Refs #22997 -- Prevented requesting a default value for ID field.
This commit is contained in:
parent
6765b6adf9
commit
216aed26f5
@ -1131,6 +1131,7 @@ class MigrationAutodetector:
|
||||
# You can't just add NOT NULL fields with no default or fields
|
||||
# which don't allow empty strings as default.
|
||||
time_fields = (models.DateField, models.DateTimeField, models.TimeField)
|
||||
auto_fields = (models.AutoField, models.SmallAutoField, models.BigAutoField)
|
||||
preserve_default = (
|
||||
field.null
|
||||
or field.has_default()
|
||||
@ -1138,6 +1139,7 @@ class MigrationAutodetector:
|
||||
or field.many_to_many
|
||||
or (field.blank and field.empty_strings_allowed)
|
||||
or (isinstance(field, time_fields) and field.auto_now)
|
||||
or (isinstance(field, auto_fields))
|
||||
)
|
||||
if not preserve_default:
|
||||
field = field.clone()
|
||||
|
@ -1595,6 +1595,28 @@ class AutodetectorTests(BaseAutodetectorTests):
|
||||
changes, "testapp", 0, 0, db_default="Ada Lovelace"
|
||||
)
|
||||
|
||||
@mock.patch(
|
||||
"django.db.migrations.questioner.MigrationQuestioner.ask_not_null_addition",
|
||||
side_effect=AssertionError("Should not have prompted for not null addition"),
|
||||
)
|
||||
def test_remove_primary_key_attribute(self, mocked_ask_method):
|
||||
initial_state = ModelState(
|
||||
"testapp",
|
||||
"Author",
|
||||
[
|
||||
("pkfield", models.IntegerField(primary_key=True)),
|
||||
],
|
||||
)
|
||||
updated_state = ModelState(
|
||||
"testapp",
|
||||
"Author",
|
||||
[
|
||||
("id", models.AutoField(primary_key=True)),
|
||||
("pkfield", models.IntegerField(primary_key=False)),
|
||||
],
|
||||
)
|
||||
changes = self.get_changes([initial_state], [updated_state])
|
||||
|
||||
@mock.patch(
|
||||
"django.db.migrations.questioner.MigrationQuestioner.ask_not_null_alteration",
|
||||
return_value=models.NOT_PROVIDED,
|
||||
|
Loading…
Reference in New Issue
Block a user