123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- ============================================
- 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
- ========================
- Schema migrations
- ~~~~~~~~~~~~~~~~~
- Django now has built-in support for schema migrations, which allows models
- to be updated, changed and deleted and the changes stored into migration files
- and then run on any deployed database.
- Migrations are covered in :doc:`their own documentation</topics/migrations>`,
- but a few of the key features are:
- * ``syncdb`` has been deprecated and replaced by ``migrate``. Don't worry -
- calls to ``syncdb`` will still work as before.
- * A new ``makemigrations`` command provides an easy way to autodetect changes
- to your models and make migrations for them.
- * :data:`~django.db.models.signals.post_syncdb` and
- :data:`~django.db.models.signals.post_syncdb` have been renamed to
- :data:`~django.db.models.signals.pre_migrate` and
- :data:`~django.db.models.signals.post_migrate` respectively. The
- ``create_models``/``created_models`` argument has also been deprecated.
- * The ``allow_syncdb`` method on database routers is now called ``allow_migrate``,
- but still performs the same function. Routers with ``allow_syncdb`` methods
- will still work, but that method name is deprecated and you should change
- it as soon as possible (nothing more than renaming is required).
- 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``).
- 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.
- allow_syncdb/allow_migrate
- ~~~~~~~~~~~~~~~~~~~~~~~~~~
- While Django will still look at ``allow_syncdb`` methods even though they
- should be renamed to ``allow_migrate``, there is a subtle difference in which
- models get passed to these methods.
- For apps with migrations, ``allow_migrate`` will now get passed
- :ref:`historical models <historical-models>`, which are special versioned models
- without custom attributes, methods or managers. Make sure your ``allow_migrate``
- methods are only referring to fields or other items in ``model._meta``.
- 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.
- 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.
|