Loading docs/howto/custom-model-fields.txt +28 −0 Original line number Diff line number Diff line Loading @@ -311,6 +311,34 @@ and reconstructing the field:: new_instance = MyField(*args, **kwargs) self.assertEqual(my_field_instance.some_attribute, new_instance.some_attribute) Changing a custom field's base class ------------------------------------ You can't change the base class of a custom field because Django won't detect the change and make a migration for it. For example, if you start with:: class CustomCharField(models.CharField): ... and then decide that you want to use ``TextField`` instead, you can't change the subclass like this:: class CustomCharField(models.TextField): ... Instead, you must create a new custom field class and update your models to reference it:: class CustomCharField(models.CharField): ... class CustomTextField(models.TextField): ... As discussed in :ref:`removing fields <migrations-removing-model-fields>`, you must retain the original ``CustomCharField`` class as long as you have migrations that reference it. Documenting your custom field ----------------------------- Loading Loading
docs/howto/custom-model-fields.txt +28 −0 Original line number Diff line number Diff line Loading @@ -311,6 +311,34 @@ and reconstructing the field:: new_instance = MyField(*args, **kwargs) self.assertEqual(my_field_instance.some_attribute, new_instance.some_attribute) Changing a custom field's base class ------------------------------------ You can't change the base class of a custom field because Django won't detect the change and make a migration for it. For example, if you start with:: class CustomCharField(models.CharField): ... and then decide that you want to use ``TextField`` instead, you can't change the subclass like this:: class CustomCharField(models.TextField): ... Instead, you must create a new custom field class and update your models to reference it:: class CustomCharField(models.CharField): ... class CustomTextField(models.TextField): ... As discussed in :ref:`removing fields <migrations-removing-model-fields>`, you must retain the original ``CustomCharField`` class as long as you have migrations that reference it. Documenting your custom field ----------------------------- Loading