def test_create_instance(self):
instance = TestEChoiceFieldEIntChoicesModel.objects.create(choice=ETestIntChoices.FIELD1)
choice = instance.choice
self.assertIsInstance(choice, ETestIntChoices)
self.assertIs(choice, ETestIntChoices.FIELD1)
self.assertEqual(choice.value, 10)
self.assertEqual(choice.label, 'Label 1')
if StrictVersion(django_version()) < StrictVersion('1.9.0'):
self.assertEqual(instance._meta.fields[1].__class__.__name__, 'EChoiceField')
else:
self.assertEqual(instance._meta.fields[1].__class__.__name__, 'ETestIntChoicesField')
self.assertEqual(instance._meta.fields[1].choices, ETestIntChoices.choices())
# Default value
self.assertIs(instance._meta.fields[1].default, models.fields.NOT_PROVIDED)
self.assertIsNone(instance._meta.fields[1].get_default())
# to_python()
self.assertRaisesMessage(exceptions.ValidationError, '["\'foo\' value must be an integer."]',
instance._meta.fields[1].to_python, 'foo')
# Custom flatchoices
self.assertEqual(instance._meta.fields[1].flatchoices,
[(ETestIntChoices.FIELD1, 'Label 1'), (ETestIntChoices.FIELD2, 'Label 2')])
instance.delete()
评论列表
文章目录