mirror of
https://github.com/django/django.git
synced 2025-07-24 13:44:32 +00:00
Fixed #22210 -- Saving model instances to non-related fields.
Previously, saving a model instance to a non-related field (in particular a FloatField) would silently convert the model to an Integer (the pk) and save it. This is undesirable behaviour, and likely to cause confusion so the validatio has been hardened. Thanks to @PirosB3 for the patch and @jarshwah for the review.
This commit is contained in:
parent
3bd45ba00d
commit
819e09b848
4 changed files with 27 additions and 2 deletions
|
@ -23,7 +23,7 @@ from django.utils.functional import lazy
|
|||
from .models import (
|
||||
Foo, Bar, Whiz, BigD, BigS, BigInt, Post, NullBooleanModel,
|
||||
BooleanModel, PrimaryKeyCharModel, DataModel, Document, RenamedField,
|
||||
VerboseNameField, FksToBooleans, FkToChar)
|
||||
VerboseNameField, FksToBooleans, FkToChar, FloatModel)
|
||||
|
||||
|
||||
class BasicFieldTests(test.TestCase):
|
||||
|
@ -78,6 +78,16 @@ class BasicFieldTests(test.TestCase):
|
|||
|
||||
self.assertEqual(m._meta.get_field('id').verbose_name, 'verbose pk')
|
||||
|
||||
def test_float_validates_object(self):
|
||||
instance = FloatModel(size=2.5)
|
||||
instance.save()
|
||||
self.assertTrue(instance.id)
|
||||
|
||||
obj = FloatModel.objects.get(pk=1)
|
||||
obj.size = obj
|
||||
with self.assertRaises(TypeError):
|
||||
obj.save()
|
||||
|
||||
def test_choices_form_class(self):
|
||||
"""Can supply a custom choices form class. Regression for #20999."""
|
||||
choices = [('a', 'a')]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue