mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #19617 -- Refactored Form metaclasses to support more inheritance scenarios.
Thanks apollo13, funkybob and mjtamlyn for the reviews.
This commit is contained in:
@@ -467,6 +467,8 @@ these changes.
|
||||
* The ``use_natural_keys`` argument for ``serializers.serialize()`` will be
|
||||
removed. Use ``use_natural_foreign_keys`` instead.
|
||||
|
||||
* ``django.forms.get_declared_fields`` will be removed.
|
||||
|
||||
2.0
|
||||
---
|
||||
|
||||
|
||||
@@ -288,6 +288,11 @@ Forms
|
||||
:func:`~django.forms.formsets.formset_factory` to allow validating
|
||||
a minimum number of submitted forms.
|
||||
|
||||
* The metaclasses used by ``Form`` and ``ModelForm`` have been reworked to
|
||||
support more inheritance scenarios. The previous limitation that prevented
|
||||
inheriting from both ``Form`` and ``ModelForm`` simultaneously have been
|
||||
removed as long as ``ModelForm`` appears first in the MRO.
|
||||
|
||||
Internationalization
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -513,6 +518,12 @@ Miscellaneous
|
||||
still worked, even though it was not documented or officially supported. If
|
||||
you're still using it, please update to the current :setting:`CACHES` syntax.
|
||||
|
||||
* The default ordering of ``Form`` fields in case of inheritance has changed to
|
||||
follow normal Python MRO. Fields are now discovered by iterating through the
|
||||
MRO in reverse with the topmost class coming last. This only affects you if
|
||||
you relied on the default field ordering while having fields defined on both
|
||||
the current class *and* on a parent ``Form``.
|
||||
|
||||
Features deprecated in 1.7
|
||||
==========================
|
||||
|
||||
|
||||
@@ -644,11 +644,12 @@ There are a couple of things to note, however.
|
||||
used. This means the child's ``Meta``, if it exists, otherwise the
|
||||
``Meta`` of the first parent, etc.
|
||||
|
||||
* For technical reasons, a subclass cannot inherit from both a ``ModelForm``
|
||||
and a ``Form`` simultaneously.
|
||||
.. versionchanged:: 1.7
|
||||
|
||||
Chances are these notes won't affect you unless you're trying to do something
|
||||
tricky with subclassing.
|
||||
* It's possible to inherit from both ``Form`` and ``ModelForm`` simultaneuosly,
|
||||
however, you must ensure that ``ModelForm`` appears first in the MRO. This is
|
||||
because these classes rely on different metaclasses and a class can only have
|
||||
one metaclass.
|
||||
|
||||
.. _modelforms-factory:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user