diff options
| author | Baylee Feore <baylee@yeti.co> | 2016-06-02 17:50:11 -0700 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-06-08 10:38:54 -0400 |
| commit | 4765769b76c07f074a915655503d29028d50c122 (patch) | |
| tree | 6aacf5996dadd40ace40abf3bbe2d4412a1993b2 /docs/howto | |
| parent | d22bac99b072abd6b04e4393d355ee6fb614300c (diff) | |
[1.9.x] Fixed #26702 -- Documented how to change the base class of a custom field.
Backport of 7767978beec6098baea75d50a191a3b8224e729f from master
Diffstat (limited to 'docs/howto')
| -rw-r--r-- | docs/howto/custom-model-fields.txt | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/docs/howto/custom-model-fields.txt b/docs/howto/custom-model-fields.txt index 3485c8a22e..1c2484d786 100644 --- a/docs/howto/custom-model-fields.txt +++ b/docs/howto/custom-model-fields.txt @@ -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 ----------------------------- |
