Loading django/db/backends/mysql/validation.py +4 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,10 @@ class DatabaseValidation(BaseDatabaseValidation): if getattr(field, 'rel', None) is None: field_type = field.db_type(connection) # Ignore any non-concrete fields if field_type is None: return errors if (field_type.startswith('varchar') # Look for CharFields... and field.unique # ... that are unique and (field.max_length is None or int(field.max_length) > 255)): Loading docs/releases/1.7.2.txt +4 −1 Original line number Diff line number Diff line Loading @@ -51,8 +51,11 @@ Bugfixes (:ticket:`23420`). * Fixed a migration serializing bug involving ``float("nan")`` and ``float("inf")`` (:ticket:23770:). ``float("inf")`` (:ticket:`23770`). * Fixed a regression where custom form fields having a ``queryset`` attribute but no ``limit_choices_to`` could not be used in a :class:`~django.forms.ModelForm` (:ticket:`23795`). * Fixed a custom field type validation error with MySQL backend when ``db_type`` returned ``None`` (:ticket:`23761`). tests/invalid_models_tests/test_custom_fields.py 0 → 100644 +20 −0 Original line number Diff line number Diff line from django.db import models from .base import IsolatedModelsTestCase class CustomFieldTest(IsolatedModelsTestCase): def test_none_column(self): class NoColumnField(models.AutoField): def db_type(self, connection): # None indicates not to create a column in the database. return None class Model(models.Model): field = NoColumnField(primary_key=True, db_column="other_field") other_field = models.IntegerField() field = Model._meta.get_field('field') errors = field.check() self.assertEqual(errors, []) Loading
django/db/backends/mysql/validation.py +4 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,10 @@ class DatabaseValidation(BaseDatabaseValidation): if getattr(field, 'rel', None) is None: field_type = field.db_type(connection) # Ignore any non-concrete fields if field_type is None: return errors if (field_type.startswith('varchar') # Look for CharFields... and field.unique # ... that are unique and (field.max_length is None or int(field.max_length) > 255)): Loading
docs/releases/1.7.2.txt +4 −1 Original line number Diff line number Diff line Loading @@ -51,8 +51,11 @@ Bugfixes (:ticket:`23420`). * Fixed a migration serializing bug involving ``float("nan")`` and ``float("inf")`` (:ticket:23770:). ``float("inf")`` (:ticket:`23770`). * Fixed a regression where custom form fields having a ``queryset`` attribute but no ``limit_choices_to`` could not be used in a :class:`~django.forms.ModelForm` (:ticket:`23795`). * Fixed a custom field type validation error with MySQL backend when ``db_type`` returned ``None`` (:ticket:`23761`).
tests/invalid_models_tests/test_custom_fields.py 0 → 100644 +20 −0 Original line number Diff line number Diff line from django.db import models from .base import IsolatedModelsTestCase class CustomFieldTest(IsolatedModelsTestCase): def test_none_column(self): class NoColumnField(models.AutoField): def db_type(self, connection): # None indicates not to create a column in the database. return None class Model(models.Model): field = NoColumnField(primary_key=True, db_column="other_field") other_field = models.IntegerField() field = Model._meta.get_field('field') errors = field.check() self.assertEqual(errors, [])