Loading docs/topics/migrations.txt +12 −2 Original line number Diff line number Diff line Loading @@ -601,9 +601,14 @@ of three things ``(path, args, kwargs)``: Django will write out the value as an instantiation of your class with the given arguments, similar to the way it writes out references to Django fields. To prevent a new migration from being created each time :djadmin:`makemigrations` is run, you should also add a ``__eq__()`` method to the decorated class. This function will be called by Django's migration framework to detect changes between states. As long as all of the arguments to your class' constructor are themselves serializable, you can just use the ``@deconstructible`` class decorator from ``django.utils.deconstruct`` to add the method:: serializable, you can use the ``@deconstructible`` class decorator from ``django.utils.deconstruct`` to add the ``deconstruct()`` method:: from django.utils.deconstruct import deconstructible Loading @@ -611,8 +616,13 @@ from ``django.utils.deconstruct`` to add the method:: class MyCustomClass(object): def __init__(self, foo=1): self.foo = foo ... def __eq__(self, other): return self.foo == other.foo The decorator adds logic to capture and preserve the arguments on their way into your constructor, and then returns those arguments exactly when deconstruct() is called. Loading Loading
docs/topics/migrations.txt +12 −2 Original line number Diff line number Diff line Loading @@ -601,9 +601,14 @@ of three things ``(path, args, kwargs)``: Django will write out the value as an instantiation of your class with the given arguments, similar to the way it writes out references to Django fields. To prevent a new migration from being created each time :djadmin:`makemigrations` is run, you should also add a ``__eq__()`` method to the decorated class. This function will be called by Django's migration framework to detect changes between states. As long as all of the arguments to your class' constructor are themselves serializable, you can just use the ``@deconstructible`` class decorator from ``django.utils.deconstruct`` to add the method:: serializable, you can use the ``@deconstructible`` class decorator from ``django.utils.deconstruct`` to add the ``deconstruct()`` method:: from django.utils.deconstruct import deconstructible Loading @@ -611,8 +616,13 @@ from ``django.utils.deconstruct`` to add the method:: class MyCustomClass(object): def __init__(self, foo=1): self.foo = foo ... def __eq__(self, other): return self.foo == other.foo The decorator adds logic to capture and preserve the arguments on their way into your constructor, and then returns those arguments exactly when deconstruct() is called. Loading