diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-11-12 20:33:06 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-11-14 20:22:07 +0100 |
| commit | c705625ebff0141ed2b95dd3c8174bda8270a47f (patch) | |
| tree | 95d7af823fdf984e00a45abdc2ba16bb40d31d32 /django/db/models/fields/generated.py | |
| parent | 5875f03ce61b85dfd9ad34f7b871c231c358d432 (diff) | |
Refs #34944 -- Propagated system checks for GeneratedField.output_field.
Diffstat (limited to 'django/db/models/fields/generated.py')
| -rw-r--r-- | django/db/models/fields/generated.py | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/django/db/models/fields/generated.py b/django/db/models/fields/generated.py index ce811789c3..9a73b7fe37 100644 --- a/django/db/models/fields/generated.py +++ b/django/db/models/fields/generated.py @@ -63,11 +63,45 @@ class GeneratedField(Field): def check(self, **kwargs): databases = kwargs.get("databases") or [] - return [ + errors = [ *super().check(**kwargs), *self._check_supported(databases), *self._check_persistence(databases), ] + output_field_clone = self.output_field.clone() + output_field_clone.model = self.model + output_field_checks = output_field_clone.check(databases=databases) + if output_field_checks: + separator = "\n " + error_messages = separator.join( + f"{output_check.msg} ({output_check.id})" + for output_check in output_field_checks + if isinstance(output_check, checks.Error) + ) + if error_messages: + errors.append( + checks.Error( + "GeneratedField.output_field has errors:" + f"{separator}{error_messages}", + obj=self, + id="fields.E223", + ) + ) + warning_messages = separator.join( + f"{output_check.msg} ({output_check.id})" + for output_check in output_field_checks + if isinstance(output_check, checks.Warning) + ) + if warning_messages: + errors.append( + checks.Warning( + "GeneratedField.output_field has warnings:" + f"{separator}{warning_messages}", + obj=self, + id="fields.W224", + ) + ) + return errors def _check_supported(self, databases): errors = [] |
