MCPcopy
hub / github.com/django/django / test_formfield_initial

Method test_formfield_initial

tests/forms_tests/tests/tests.py:281–325  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

279 self.assertFalse(f.is_valid())
280
281 def test_formfield_initial(self):
282 # If the model has default values for some fields, they are used as the
283 # formfield initial values.
284 class DefaultsForm(ModelForm):
285 class Meta:
286 model = Defaults
287 fields = "__all__"
288
289 self.assertEqual(DefaultsForm().fields["name"].initial, "class default value")
290 self.assertEqual(
291 DefaultsForm().fields["def_date"].initial, datetime.date(1980, 1, 1)
292 )
293 self.assertEqual(DefaultsForm().fields["value"].initial, 42)
294 r1 = DefaultsForm()["callable_default"].as_widget()
295 r2 = DefaultsForm()["callable_default"].as_widget()
296 self.assertNotEqual(r1, r2)
297
298 # In a ModelForm that is passed an instance, the initial values come
299 # from the instance's values, not the model's defaults.
300 foo_instance = Defaults(
301 name="instance value", def_date=datetime.date(1969, 4, 4), value=12
302 )
303 instance_form = DefaultsForm(instance=foo_instance)
304 self.assertEqual(instance_form.initial["name"], "instance value")
305 self.assertEqual(instance_form.initial["def_date"], datetime.date(1969, 4, 4))
306 self.assertEqual(instance_form.initial["value"], 12)
307
308 from django.forms import CharField
309
310 class ExcludingForm(ModelForm):
311 name = CharField(max_length=255)
312
313 class Meta:
314 model = Defaults
315 exclude = ["name", "callable_default"]
316
317 f = ExcludingForm(
318 {"name": "Hello", "value": 99, "def_date": datetime.date(1999, 3, 2)}
319 )
320 self.assertTrue(f.is_valid())
321 self.assertEqual(f.cleaned_data["name"], "Hello")
322 obj = f.save()
323 self.assertEqual(obj.name, "class default value")
324 self.assertEqual(obj.value, 99)
325 self.assertEqual(obj.def_date, datetime.date(1999, 3, 2))
326
327
328class RelatedModelFormTests(SimpleTestCase):

Callers

nothing calls this directly

Calls 6

DefaultsFormClass · 0.85
DefaultsClass · 0.85
ExcludingFormClass · 0.85
as_widgetMethod · 0.45
is_validMethod · 0.45
saveMethod · 0.45

Tested by

no test coverage detected