123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- ============================================
- Django 1.7 release notes - UNDER DEVELOPMENT
- ============================================
- Welcome to Django 1.7!
- These release notes cover the `new features`_, as well as some `backwards
- incompatible changes`_ you'll want to be aware of when upgrading from Django
- 1.6 or older versions. We've also dropped some features, which are detailed in
- :doc:`our deprecation plan </internals/deprecation>`, and we've `begun the
- deprecation process for some features`_.
- .. _`new features`: `What's new in Django 1.7`_
- .. _`backwards incompatible changes`: `Backwards incompatible changes in 1.7`_
- .. _`begun the deprecation process for some features`: `Features deprecated in 1.7`_
- Python compatibility
- ====================
- Django 1.7 requires Python 2.7 or above, though we **highly recommend**
- the latest minor release. Support for Python 2.6 has been dropped.
- This change should affect only a small number of Django users, as most
- operating-system vendors today are shipping Python 2.7 or newer as their default
- version. If you're still using Python 2.6, however, you'll need to stick to
- Django 1.6 until you can upgrade your Python version. Per :doc:`our support
- policy </internals/release-process>`, Django 1.6 will continue to receive
- security support until the release of Django 1.8.
- What's new in Django 1.7
- ========================
- Calling custom ``QuerySet`` methods from the ``Manager``
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- The :meth:`QuerySet.as_manager() <django.db.models.query.QuerySet.as_manager>`
- class method has been added to :ref:`create Manager with QuerySet methods
- <create-manager-with-queryset-methods>`.
- Admin shortcuts support time zones
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- The "today" and "now" shortcuts next to date and time input widgets in the
- admin are now operating in the :ref:`current time zone
- <default-current-time-zone>`. Previously, they used the browser time zone,
- which could result in saving the wrong value when it didn't match the current
- time zone on the server.
- In addition, the widgets now display a help message when the browser and
- server time zone are different, to clarify how the value inserted in the field
- will be interpreted.
- Minor features
- ~~~~~~~~~~~~~~
- * The new :attr:`UploadedFile.content_type_extra
- <django.core.files.uploadedfile.UploadedFile.content_type_extra>` attribute
- contains extra parameters passed to the ``content-type`` header on a file
- upload.
- * The ``enter`` argument was added to the
- :data:`~django.test.signals.setting_changed` signal.
- * The :meth:`QuerySet.update_or_create()
- <django.db.models.query.QuerySet.update_or_create>` method was added.
- * :attr:`~django.db.models.Options.app_label` is no longer required for models
- that are defined in a ``models`` package within an app.
- * The :meth:`Context.push() <django.template.Context.push>` method now returns
- a context manager which automatically calls :meth:`pop()
- <django.template.Context.pop>` upon exiting the ``with`` statement.
- Additionally, :meth:`push() <django.template.Context.push>` now accepts
- parameters that are passed to the ``dict`` constructor used to build the new
- context level.
- * The :class:`~django.utils.feedgenerator.Atom1Feed` syndication feed's
- ``updated`` element now utilizes `updateddate` instead of ``pubdate``,
- allowing the ``published`` element to be included in the feed (which
- relies on ``pubdate``).
- * Buttons in :mod:`django.contrib.admin` now use the ``border-radius`` CSS
- property for rounded corners rather than GIF background images.
- * Some admin templates now have ``app-<app_name>`` and ``model-<model_name>``
- classes in their ``<body>`` tag to allow customizing the CSS per app or per
- model.
- * The admin changelist cells now have a ``field-<field_name>`` class in the
- HTML to enable style customizations.
- * The :func:`~django.core.mail.send_mail` now accepts an ``html_message``
- parameter for sending a multipart text/plain and text/html email.
- Backwards incompatible changes in 1.7
- =====================================
- .. warning::
- In addition to the changes outlined in this section, be sure to review the
- :doc:`deprecation plan </internals/deprecation>` for any features that
- have been removed. If you haven't updated your code within the
- deprecation timeline for a given feature, its removal may appear as a
- backwards incompatible change.
- Miscellaneous
- ~~~~~~~~~~~~~
- * The :meth:`django.core.files.uploadhandler.FileUploadHandler.new_file()`
- method is now passed an additional ``content_type_extra`` parameter. If you
- have a custom :class:`~django.core.files.uploadhandler.FileUploadHandler`
- that implements ``new_file()``, be sure it accepts this new parameter.
- * :class:`ModelFormSet<django.forms.models.BaseModelFormSet>`'s no longer
- delete instances when ``save(commit=False)`` is called. See
- :attr:`~django.forms.formsets.BaseFormSet.can_delete` for instructions on how
- to manually delete objects from deleted forms.
- * Loading empty fixtures emits a ``RuntimeWarning`` rather than raising
- :class:`~django.core.management.CommandError`.
- Features deprecated in 1.7
- ==========================
- ``django.utils.dictconfig``
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ``django.utils.dictconfig`` was a copy of :mod:`logging.config` provided for
- Python versions prior to 2.7. It has been deprecated.
- ``django.utils.unittest``
- ~~~~~~~~~~~~~~~~~~~~~~~~~
- ``django.utils.unittest`` provided uniform access to the ``unittest2`` library
- on all Python versions. Since ``unittest2`` became the standard library's
- :mod:`unittest` module in Python 2.7, and Django 1.7 drops support for older
- Python versions, this module isn't useful anymore. It has been deprecated. Use
- :mod:`unittest` instead.
- Custom SQL location for models package
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Previously, if models were organized in a package (``myapp/models/``) rather
- than simply ``myapp/models.py``, Django would look for :ref:`initial SQL data
- <initial-sql>` in ``myapp/models/sql/``. This bug has been fixed so that Django
- will search ``myapp/sql/`` as documented. The old location will continue to
- work until Django 1.9.
|