Loading docs/howto/custom-model-fields.txt +16 −2 Original line number Diff line number Diff line Loading @@ -249,7 +249,7 @@ appropriate Python object. The details of how this happens internally are a little complex, but the code you need to write in your ``Field`` class is simple: make sure your field subclass uses a special metaclass: For example:: For example, on Python 2:: class HandField(models.Field): Loading @@ -258,7 +258,21 @@ For example:: __metaclass__ = models.SubfieldBase def __init__(self, *args, **kwargs): # ... ... On Python 3, in lieu of setting the ``__metaclass__`` attribute, add ``metaclass`` to the class definition:: class HandField(models.Field, metaclass=models.SubfieldBase): ... If you want your code to work on Python 2 & 3, you can use :func:`six.with_metaclass`:: from django.utils.six import with_metaclass class HandField(with_metaclass(models.SubfieldBase, models.Field)): ... This ensures that the :meth:`.to_python` method, documented below, will always be called when the attribute is initialized. Loading Loading
docs/howto/custom-model-fields.txt +16 −2 Original line number Diff line number Diff line Loading @@ -249,7 +249,7 @@ appropriate Python object. The details of how this happens internally are a little complex, but the code you need to write in your ``Field`` class is simple: make sure your field subclass uses a special metaclass: For example:: For example, on Python 2:: class HandField(models.Field): Loading @@ -258,7 +258,21 @@ For example:: __metaclass__ = models.SubfieldBase def __init__(self, *args, **kwargs): # ... ... On Python 3, in lieu of setting the ``__metaclass__`` attribute, add ``metaclass`` to the class definition:: class HandField(models.Field, metaclass=models.SubfieldBase): ... If you want your code to work on Python 2 & 3, you can use :func:`six.with_metaclass`:: from django.utils.six import with_metaclass class HandField(with_metaclass(models.SubfieldBase, models.Field)): ... This ensures that the :meth:`.to_python` method, documented below, will always be called when the attribute is initialized. Loading