diff options
| author | Rust Saiargaliev <rustem.saiargaliev@thermondo.de> | 2021-05-10 22:19:29 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-05-18 13:20:55 +0200 |
| commit | 349bb58b8a0b6f4b98193dbfe369e41b8780f225 (patch) | |
| tree | aca4b70fd1811b48256ac8d7553cce3c709bf41f | |
| parent | 65b680a99a86c71eaf554b74639522ea747b8feb (diff) | |
[3.2.x] Fixed #32733 -- Skipped system check for specifying type of auto-created primary keys on abstract models.
Regression in b5e12d490af3debca8c55ab3c1698189fdedbbdb.
Backport of a24fed399ced6be2e9dce4cf28db00c3ee21a21c from main
| -rw-r--r-- | django/db/models/base.py | 1 | ||||
| -rw-r--r-- | docs/releases/3.2.4.txt | 3 | ||||
| -rw-r--r-- | tests/check_framework/test_model_checks.py | 8 |
3 files changed, 12 insertions, 0 deletions
diff --git a/django/db/models/base.py b/django/db/models/base.py index 5d10e7e06d..779d1fe0d5 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -1298,6 +1298,7 @@ class Model(metaclass=ModelBase): @classmethod def _check_default_pk(cls): if ( + not cls._meta.abstract and cls._meta.pk.auto_created and # Inherited PKs are checked in parents models. not ( diff --git a/docs/releases/3.2.4.txt b/docs/releases/3.2.4.txt index 51a4898163..068798e6ed 100644 --- a/docs/releases/3.2.4.txt +++ b/docs/releases/3.2.4.txt @@ -12,3 +12,6 @@ Bugfixes * Fixed a bug in Django 3.2 where a final catch-all view in the admin didn't respect the server-provided value of ``SCRIPT_NAME`` when redirecting unauthenticated users to the login page (:ticket:`32754`). + +* Fixed a bug in Django 3.2 where a system check would crash on an abstract + model (:ticket:`32733`). diff --git a/tests/check_framework/test_model_checks.py b/tests/check_framework/test_model_checks.py index ad3bf1f8b1..c26cf53903 100644 --- a/tests/check_framework/test_model_checks.py +++ b/tests/check_framework/test_model_checks.py @@ -403,6 +403,14 @@ class ModelDefaultAutoFieldTests(SimpleTestCase): self.assertEqual(checks.run_checks(app_configs=self.apps.get_app_configs()), []) + def test_skipped_on_abstract_model(self): + class Abstract(models.Model): + class Meta: + abstract = True + + # Call .check() because abstract models are not registered. + self.assertEqual(Abstract.check(), []) + def test_explicit_inherited_parent_link(self): class Parent(models.Model): id = models.AutoField(primary_key=True) |
