summaryrefslogtreecommitdiff
path: root/docs/ref
diff options
context:
space:
mode:
authorAndrew Godwin <andrew@aeracode.org>2013-08-19 18:30:48 +0100
committerAndrew Godwin <andrew@aeracode.org>2013-08-19 18:30:48 +0100
commitb6a957f0ba8a2ed1b24d7ee042a9c4beaf51ab03 (patch)
tree87d42b9e8d3d4c1516b53eee1d9332735762826a /docs/ref
parent52edc16086e3c28a78c31975bb4da2f9450590b4 (diff)
parent3c0300405009b82b52fd15483371097221662fcd (diff)
Merge remote-tracking branch 'core/master' into schema-alteration
Conflicts: docs/ref/django-admin.txt
Diffstat (limited to 'docs/ref')
-rw-r--r--docs/ref/class-based-views/base.txt6
-rw-r--r--docs/ref/class-based-views/generic-date-based.txt8
-rw-r--r--docs/ref/class-based-views/mixins-date-based.txt5
-rw-r--r--docs/ref/class-based-views/mixins-multiple-object.txt2
-rw-r--r--docs/ref/class-based-views/mixins-simple.txt4
-rw-r--r--docs/ref/contrib/admin/actions.txt4
-rw-r--r--docs/ref/contrib/admin/admindocs.txt2
-rw-r--r--docs/ref/contrib/admin/index.txt8
-rw-r--r--docs/ref/contrib/auth.txt9
-rw-r--r--docs/ref/contrib/contenttypes.txt23
-rw-r--r--docs/ref/contrib/gis/geoquerysets.txt4
-rw-r--r--docs/ref/contrib/gis/geos.txt12
-rw-r--r--docs/ref/contrib/messages.txt11
-rw-r--r--docs/ref/contrib/sites.txt7
-rw-r--r--docs/ref/contrib/staticfiles.txt4
-rw-r--r--docs/ref/databases.txt4
-rw-r--r--docs/ref/django-admin.txt10
-rw-r--r--docs/ref/files/file.txt4
-rw-r--r--docs/ref/forms/api.txt5
-rw-r--r--docs/ref/forms/fields.txt9
-rw-r--r--docs/ref/forms/validation.txt10
-rw-r--r--docs/ref/forms/widgets.txt70
-rw-r--r--docs/ref/models/fields.txt11
-rw-r--r--docs/ref/models/instances.txt36
-rw-r--r--docs/ref/models/options.txt2
-rw-r--r--docs/ref/models/querysets.txt40
-rw-r--r--docs/ref/request-response.txt8
-rw-r--r--docs/ref/settings.txt43
-rw-r--r--docs/ref/signals.txt13
-rw-r--r--docs/ref/template-response.txt23
-rw-r--r--docs/ref/templates/api.txt5
-rw-r--r--docs/ref/templates/builtins.txt22
-rw-r--r--docs/ref/unicode.txt30
-rw-r--r--docs/ref/utils.txt14
34 files changed, 171 insertions, 297 deletions
diff --git a/docs/ref/class-based-views/base.txt b/docs/ref/class-based-views/base.txt
index 24058311a4..0db1e15ea9 100644
--- a/docs/ref/class-based-views/base.txt
+++ b/docs/ref/class-based-views/base.txt
@@ -104,12 +104,6 @@ TemplateView
Renders a given template, with the context containing parameters captured
in the URL.
- .. versionchanged:: 1.5
-
- The context used to be populated with a ``{{ params }}`` dictionary of
- the parameters captured in the URL. Now those parameters are first-level
- context variables.
-
**Ancestors (MRO)**
This view inherits methods and attributes from the following views:
diff --git a/docs/ref/class-based-views/generic-date-based.txt b/docs/ref/class-based-views/generic-date-based.txt
index 205d556463..427d8f6ceb 100644
--- a/docs/ref/class-based-views/generic-date-based.txt
+++ b/docs/ref/class-based-views/generic-date-based.txt
@@ -138,24 +138,16 @@ YearArchiveView
* ``year``: A :class:`~datetime.date` object
representing the given year.
- .. versionchanged:: 1.5
-
- Previously, this returned a string.
-
* ``next_year``: A :class:`~datetime.date` object
representing the first day of the next year, according to
:attr:`~BaseDateListView.allow_empty` and
:attr:`~DateMixin.allow_future`.
- .. versionadded:: 1.5
-
* ``previous_year``: A :class:`~datetime.date` object
representing the first day of the previous year, according to
:attr:`~BaseDateListView.allow_empty` and
:attr:`~DateMixin.allow_future`.
- .. versionadded:: 1.5
-
**Notes**
* Uses a default ``template_name_suffix`` of ``_archive_year``.
diff --git a/docs/ref/class-based-views/mixins-date-based.txt b/docs/ref/class-based-views/mixins-date-based.txt
index 1162b2a194..48faf28a44 100644
--- a/docs/ref/class-based-views/mixins-date-based.txt
+++ b/docs/ref/class-based-views/mixins-date-based.txt
@@ -328,8 +328,3 @@ BaseDateListView
:meth:`~BaseDateListView.get_date_list_period` is used. ``date_type``
and ``ordering`` are simply passed to
:meth:`QuerySet.dates()<django.db.models.query.QuerySet.dates>`.
-
- .. versionchanged:: 1.5
-
- The ``ordering`` parameter was added, and the default order was
- changed to ascending.
diff --git a/docs/ref/class-based-views/mixins-multiple-object.txt b/docs/ref/class-based-views/mixins-multiple-object.txt
index 67ca5429fa..5a2ae85751 100644
--- a/docs/ref/class-based-views/mixins-multiple-object.txt
+++ b/docs/ref/class-based-views/mixins-multiple-object.txt
@@ -90,8 +90,6 @@ MultipleObjectMixin
.. attribute:: page_kwarg
- .. versionadded:: 1.5
-
A string specifying the name to use for the page parameter.
The view will expect this prameter to be available either as a query
string parameter (via ``request.GET``) or as a kwarg variable specified
diff --git a/docs/ref/class-based-views/mixins-simple.txt b/docs/ref/class-based-views/mixins-simple.txt
index 377c85cc3b..3b12ee7689 100644
--- a/docs/ref/class-based-views/mixins-simple.txt
+++ b/docs/ref/class-based-views/mixins-simple.txt
@@ -7,8 +7,6 @@ ContextMixin
.. class:: django.views.generic.base.ContextMixin
- .. versionadded:: 1.5
-
**Methods**
.. method:: get_context_data(**kwargs)
@@ -77,8 +75,6 @@ TemplateResponseMixin
.. attribute:: content_type
- .. versionadded:: 1.5
-
The content type to use for the response. ``content_type`` is passed
as a keyword argument to ``response_class``. Default is ``None`` --
meaning that Django uses :setting:`DEFAULT_CONTENT_TYPE`.
diff --git a/docs/ref/contrib/admin/actions.txt b/docs/ref/contrib/admin/actions.txt
index 58d8244525..b982aa64f7 100644
--- a/docs/ref/contrib/admin/actions.txt
+++ b/docs/ref/contrib/admin/actions.txt
@@ -269,8 +269,8 @@ Making actions available site-wide
admin.site.add_action(export_selected_objects)
- This makes the `export_selected_objects` action globally available as an
- action named `"export_selected_objects"`. You can explicitly give the action
+ This makes the ``export_selected_objects`` action globally available as an
+ action named "export_selected_objects". You can explicitly give the action
a name -- good if you later want to programmatically :ref:`remove the action
<disabling-admin-actions>` -- by passing a second argument to
:meth:`AdminSite.add_action()`::
diff --git a/docs/ref/contrib/admin/admindocs.txt b/docs/ref/contrib/admin/admindocs.txt
index 6deb7bdbf8..8809502288 100644
--- a/docs/ref/contrib/admin/admindocs.txt
+++ b/docs/ref/contrib/admin/admindocs.txt
@@ -156,6 +156,6 @@ Edit this object
Using these bookmarklets requires that you are either logged into the
:mod:`Django admin <django.contrib.admin>` as a
:class:`~django.contrib.auth.models.User` with
-:attr:`~django.contrib.auth.models.User.is_staff` set to `True`, or that the
+:attr:`~django.contrib.auth.models.User.is_staff` set to ``True``, or that the
``XViewMiddleware`` is installed and you are accessing the site from an IP
address listed in :setting:`INTERNAL_IPS`.
diff --git a/docs/ref/contrib/admin/index.txt b/docs/ref/contrib/admin/index.txt
index 8feb574efd..ba5fa3bff6 100644
--- a/docs/ref/contrib/admin/index.txt
+++ b/docs/ref/contrib/admin/index.txt
@@ -1235,8 +1235,6 @@ templates used by the :class:`ModelAdmin` views:
.. method:: ModelAdmin.get_list_filter(self, request)
- .. versionadded:: 1.5
-
The ``get_list_filter`` method is given the ``HttpRequest`` and is expected
to return the same kind of sequence type as for the
:attr:`~ModelAdmin.list_filter` attribute.
@@ -1251,8 +1249,6 @@ templates used by the :class:`ModelAdmin` views:
.. method:: ModelAdmin.get_inline_instances(self, request, obj=None)
- .. versionadded:: 1.5
-
The ``get_inline_instances`` method is given the ``HttpRequest`` and the
``obj`` being edited (or ``None`` on an add form) and is expected to return
a ``list`` or ``tuple`` of :class:`~django.contrib.admin.InlineModelAdmin`
@@ -1506,10 +1502,6 @@ templates used by the :class:`ModelAdmin` views:
Sends a message to the user using the :mod:`django.contrib.messages`
backend. See the :ref:`custom ModelAdmin example <custom-admin-action>`.
- .. versionchanged:: 1.5
-
- Keyword arguments were added in Django 1.5.
-
Keyword arguments allow you to change the message level, add extra CSS
tags, or fail silently if the ``contrib.messages`` framework is not
installed. These keyword arguments match those for
diff --git a/docs/ref/contrib/auth.txt b/docs/ref/contrib/auth.txt
index 4fe87e9872..799d3277ab 100644
--- a/docs/ref/contrib/auth.txt
+++ b/docs/ref/contrib/auth.txt
@@ -215,11 +215,16 @@ Methods
(the Django app label). If the user is inactive, this method will
always return ``False``.
- .. method:: email_user(subject, message, from_email=None)
+ .. method:: email_user(subject, message, from_email=None, **kwargs)
Sends an email to the user. If ``from_email`` is ``None``, Django uses
the :setting:`DEFAULT_FROM_EMAIL`.
+ .. versionchanged:: 1.7
+
+ Any ``**kwargs`` are passed to the underlying
+ :meth:`~django.core.mail.send_mail()` call.
+
Manager methods
---------------
@@ -384,8 +389,6 @@ can be used for notification when a user logs in or out.
.. function:: user_login_failed
- .. versionadded:: 1.5
-
Sent when the user failed to login successfully
``sender``
diff --git a/docs/ref/contrib/contenttypes.txt b/docs/ref/contrib/contenttypes.txt
index 89c4a88e00..21e65f168b 100644
--- a/docs/ref/contrib/contenttypes.txt
+++ b/docs/ref/contrib/contenttypes.txt
@@ -199,14 +199,18 @@ The ``ContentTypeManager``
Takes either a model class or an instance of a model, and returns the
:class:`~django.contrib.contenttypes.models.ContentType` instance
- representing that model.
+ representing that model. ``for_concrete_model=False`` allows fetching
+ the :class:`~django.contrib.contenttypes.models.ContentType` of a proxy
+ model.
.. method:: get_for_models(*models[, for_concrete_models=True])
Takes a variadic number of model classes, and returns a dictionary
mapping the model classes to the
:class:`~django.contrib.contenttypes.models.ContentType` instances
- representing them.
+ representing them. ``for_concrete_models=False`` allows fetching the
+ :class:`~django.contrib.contenttypes.models.ContentType` of proxy
+ models.
.. method:: get_by_natural_key(app_label, model)
@@ -232,21 +236,6 @@ lookup::
.. _generic-relations:
-.. versionadded:: 1.5
-
- Prior to Django 1.5,
- :meth:`~django.contrib.contenttypes.models.ContentTypeManager.get_for_model` and
- :meth:`~django.contrib.contenttypes.models.ContentTypeManager.get_for_models`
- always returned the :class:`~django.contrib.contenttypes.models.ContentType`
- associated with the concrete model of the specified one(s). That means there
- was no way to retrieve the
- :class:`~django.contrib.contenttypes.models.ContentType` of a proxy model
- using those methods. As of Django 1.5 you can now pass a boolean flag –
- ``for_concrete_model`` and ``for_concrete_models`` respectively – to specify
- wether or not you want to retrieve the
- :class:`~django.contrib.contenttypes.models.ContentType` for the concrete or
- direct model.
-
Generic relations
=================
diff --git a/docs/ref/contrib/gis/geoquerysets.txt b/docs/ref/contrib/gis/geoquerysets.txt
index 5e51e4cbf3..66afc3d377 100644
--- a/docs/ref/contrib/gis/geoquerysets.txt
+++ b/docs/ref/contrib/gis/geoquerysets.txt
@@ -949,10 +949,6 @@ __ http://geohash.org/
*Availability*: PostGIS, SpatiaLite
-.. versionchanged:: 1.5
-
- ``geojson`` support for Spatialite > 3.0 has been added.
-
Attaches a ``geojson`` attribute to every model in the queryset that contains the
`GeoJSON`__ representation of the geometry.
diff --git a/docs/ref/contrib/gis/geos.txt b/docs/ref/contrib/gis/geos.txt
index 12e4e55165..a9c947407f 100644
--- a/docs/ref/contrib/gis/geos.txt
+++ b/docs/ref/contrib/gis/geos.txt
@@ -276,10 +276,6 @@ that the SRID value is not included in this representation
because it is not a part of the OGC specification (use the
:attr:`GEOSGeometry.hexewkb` property instead).
-.. versionchanged:: 1.5
-
- Prior to Django 1.5, the Z value of the geometry was dropped.
-
.. attribute:: GEOSGeometry.hexewkb
Returns the EWKB of this Geometry in hexadecimal form. This is an
@@ -325,10 +321,6 @@ Returns the WKB (Well-Known Binary) representation of this Geometry
as a Python buffer. SRID value is not included, use the
:attr:`GEOSGeometry.ewkb` property instead.
-.. versionchanged:: 1.5
-
- Prior to Django 1.5, the Z value of the geometry was dropped.
-
.. _ewkb:
.. attribute:: GEOSGeometry.ewkb
@@ -426,8 +418,6 @@ geometry that do not make up other.
.. method:: GEOSGeometry.interpolate(distance)
.. method:: GEOSGeometry.interpolate_normalized(distance)
-.. versionadded:: 1.5
-
Given a distance (float), returns the point (or closest point) within the
geometry (:class:`LineString` or :class:`MultiLineString`) at that distance.
The normalized version takes the distance as a float between 0 (origin) and 1
@@ -443,8 +433,6 @@ geometry and other.
.. method:: GEOSGeometry.project(point)
.. method:: GEOSGeometry.project_normalized(point)
-.. versionadded:: 1.5
-
Returns the distance (float) from the origin of the geometry
(:class:`LineString` or :class:`MultiLineString`) to the point projected on the
geometry (that is to a point of the line the closest to the given point).
diff --git a/docs/ref/contrib/messages.txt b/docs/ref/contrib/messages.txt
index 608c37bb7f..2014c7c183 100644
--- a/docs/ref/contrib/messages.txt
+++ b/docs/ref/contrib/messages.txt
@@ -54,20 +54,21 @@ Storage backends
The messages framework can use different backends to store temporary messages.
-Django provides three built-in storage classes:
+Django provides three built-in storage classes in
+:mod:`django.contrib.messages`:
-.. class:: django.contrib.messages.storage.session.SessionStorage
+.. class:: storage.session.SessionStorage
This class stores all messages inside of the request's session. Therefore
it requires Django's ``contrib.sessions`` application.
-.. class:: django.contrib.messages.storage.cookie.CookieStorage
+.. class:: storage.cookie.CookieStorage
This class stores the message data in a cookie (signed with a secret hash
to prevent manipulation) to persist notifications across requests. Old
messages are dropped if the cookie data size would exceed 2048 bytes.
-.. class:: django.contrib.messages.storage.fallback.FallbackStorage
+.. class:: storage.fallback.FallbackStorage
This class first uses ``CookieStorage``, and falls back to using
``SessionStorage`` for the messages that could not fit in a single cookie.
@@ -83,6 +84,8 @@ path, for example::
MESSAGE_STORAGE = 'django.contrib.messages.storage.cookie.CookieStorage'
+.. class:: storage.base.BaseStorage
+
To write your own storage class, subclass the ``BaseStorage`` class in
``django.contrib.messages.storage.base`` and implement the ``_get`` and
``_store`` methods.
diff --git a/docs/ref/contrib/sites.txt b/docs/ref/contrib/sites.txt
index f6480cae3a..fd2e917c1d 100644
--- a/docs/ref/contrib/sites.txt
+++ b/docs/ref/contrib/sites.txt
@@ -417,9 +417,10 @@ Here's how Django uses the sites framework:
:class:`~django.contrib.sites.models.Site` name to the template as
``{{ site_name }}``.
-* The shortcut view (``django.views.defaults.shortcut``) uses the domain
- of the current :class:`~django.contrib.sites.models.Site` object when
- calculating an object's URL.
+* The shortcut view (``django.contrib.contenttypes.views.shortcut``)
+ uses the domain of the current
+ :class:`~django.contrib.sites.models.Site` object when calculating
+ an object's URL.
* In the admin framework, the "view on site" link uses the current
:class:`~django.contrib.sites.models.Site` to work out the domain for the
diff --git a/docs/ref/contrib/staticfiles.txt b/docs/ref/contrib/staticfiles.txt
index f96c2e8a1b..b9963414f4 100644
--- a/docs/ref/contrib/staticfiles.txt
+++ b/docs/ref/contrib/staticfiles.txt
@@ -255,8 +255,6 @@ CachedStaticFilesStorage
.. method:: file_hash(name, content=None)
- .. versionadded:: 1.5
-
The method that is used when creating the hashed name of a file.
Needs to return a hash for the given file name and content.
By default it calculates a MD5 hash from the content's chunks as
@@ -290,8 +288,6 @@ The previous example is equal to calling the ``url`` method of an instance of
useful when using a non-local storage backend to deploy files as documented
in :ref:`staticfiles-from-cdn`.
-.. versionadded:: 1.5
-
If you'd like to retrieve a static URL without displaying it, you can use a
slightly different call:
diff --git a/docs/ref/databases.txt b/docs/ref/databases.txt
index 60153eb735..707184c3ac 100644
--- a/docs/ref/databases.txt
+++ b/docs/ref/databases.txt
@@ -191,10 +191,6 @@ Django supports MySQL 5.0.3 and higher.
`MySQL 5.0`_ adds the ``information_schema`` database, which contains detailed
data on all database schema. Django's ``inspectdb`` feature uses it.
-.. versionchanged:: 1.5
-
- The minimum version requirement of MySQL 5.0.3 was set in Django 1.5.
-
Django expects the database to support Unicode (UTF-8 encoding) and delegates to
it the task of enforcing transactions and referential integrity. It is important
to be aware of the fact that the two latter ones aren't actually enforced by
diff --git a/docs/ref/django-admin.txt b/docs/ref/django-admin.txt
index 27b68e4f1c..1385648d5d 100644
--- a/docs/ref/django-admin.txt
+++ b/docs/ref/django-admin.txt
@@ -254,8 +254,6 @@ to flush.
``--no-initial-data``
~~~~~~~~~~~~~~~~~~~~~
-.. versionadded:: 1.5
-
Use ``--no-initial-data`` to avoid loading the initial_data fixture.
@@ -332,8 +330,6 @@ onto which the data will be loaded.
.. django-admin-option:: --ignorenonexistent
-.. versionadded:: 1.5
-
The :djadminopt:`--ignorenonexistent` option can be used to ignore fields that
may have been removed from models since the fixture was originally generated.
@@ -903,10 +899,6 @@ behavior you can use the ``--no-startup`` option. e.g.::
django-admin.py shell --plain --no-startup
-.. versionadded:: 1.5
-
- The ``--interface`` option was added in Django 1.5.
-
.. versionadded:: 1.6
The ``--no-startup`` option was added in Django 1.6.
@@ -1337,8 +1329,6 @@ clearsessions
.. django-admin:: clearsessions
-.. versionadded:: 1.5
-
Can be run as a cron job or directly to clean out expired sessions.
``django.contrib.sitemaps``
diff --git a/docs/ref/files/file.txt b/docs/ref/files/file.txt
index 7562f9b6bf..6ca7ec121a 100644
--- a/docs/ref/files/file.txt
+++ b/docs/ref/files/file.txt
@@ -100,10 +100,6 @@ The ``ContentFile`` Class
f1 = ContentFile("esta sentencia está en español")
f2 = ContentFile(b"these are bytes")
- .. versionchanged:: 1.5
-
- ContentFile also accepts Unicode strings.
-
.. currentmodule:: django.core.files.images
The ``ImageFile`` Class
diff --git a/docs/ref/forms/api.txt b/docs/ref/forms/api.txt
index 780cb5d4f7..f084273cd9 100644
--- a/docs/ref/forms/api.txt
+++ b/docs/ref/forms/api.txt
@@ -211,11 +211,6 @@ only the valid fields::
>>> f.cleaned_data
{'cc_myself': True, 'message': u'Hi there'}
-.. versionchanged:: 1.5
-
-Until Django 1.5, the ``cleaned_data`` attribute wasn't defined at all when
-the ``Form`` didn't validate.
-
``cleaned_data`` will always *only* contain a key for fields defined in the
``Form``, even if you pass extra data when you define the ``Form``. In this
example, we pass a bunch of extra fields to the ``ContactForm`` constructor,
diff --git a/docs/ref/forms/fields.txt b/docs/ref/forms/fields.txt
index e7c6612a72..0e4d352132 100644
--- a/docs/ref/forms/fields.txt
+++ b/docs/ref/forms/fields.txt
@@ -573,16 +573,12 @@ For each field, we describe the default widget used if you don't specify
.. attribute:: allow_files
- .. versionadded:: 1.5
-
Optional. Either ``True`` or ``False``. Default is ``True``. Specifies
whether files in the specified location should be included. Either this or
:attr:`allow_folders` must be ``True``.
.. attribute:: allow_folders
- .. versionadded:: 1.5
-
Optional. Either ``True`` or ``False``. Default is ``False``. Specifies
whether folders in the specified location should be included. Either this or
:attr:`allow_files` must be ``True``.
@@ -1065,11 +1061,6 @@ objects (in the case of ``ModelMultipleChoiceField``) into the
* Error message keys: ``required``, ``list``, ``invalid_choice``,
``invalid_pk_value``
- .. versionchanged:: 1.5
-
- The empty and normalized values were changed to be consistently
- ``QuerySets`` instead of ``[]`` and ``QuerySet`` respectively.
-
.. versionchanged:: 1.6
The ``invalid_choice`` message may contain ``%(value)s`` and the
diff --git a/docs/ref/forms/validation.txt b/docs/ref/forms/validation.txt
index 255b665c42..94e9308c9a 100644
--- a/docs/ref/forms/validation.txt
+++ b/docs/ref/forms/validation.txt
@@ -450,11 +450,5 @@ entries in ``_errors``.
Secondly, once we have decided that the combined data in the two fields we are
considering aren't valid, we must remember to remove them from the
-``cleaned_data``.
-
-.. versionchanged:: 1.5
-
- Django used to remove the ``cleaned_data`` attribute entirely if there were
- any errors in the form. Since version 1.5, ``cleaned_data`` is present even if
- the form doesn't validate, but it contains only field values that did
- validate.
+``cleaned_data``. `cleaned_data`` is present even if the form doesn't
+validate, but it contains only field values that did validate.
diff --git a/docs/ref/forms/widgets.txt b/docs/ref/forms/widgets.txt
index 080d1fea86..47e14043fc 100644
--- a/docs/ref/forms/widgets.txt
+++ b/docs/ref/forms/widgets.txt
@@ -525,11 +525,6 @@ Selector and checkbox widgets
A callable that takes the value of the CheckBoxInput and returns
``True`` if the checkbox should be checked for that value.
- .. versionchanged:: 1.5
-
- Exceptions from ``check_test`` used to be silenced by its caller,
- this is no longer the case, they will propagate upwards.
-
``Select``
~~~~~~~~~~
@@ -590,25 +585,26 @@ Selector and checkbox widgets
.. code-block:: html
<div class="myradio">
- <label><input type="radio" name="beatles" value="john" /> John</label>
+ <label for="id_beatles_0"><input id="id_beatles_0" name="beatles" type="radio" value="john" /> John</label>
</div>
<div class="myradio">
- <label><input type="radio" name="beatles" value="paul" /> Paul</label>
+ <label for="id_beatles_1"><input id="id_beatles_1" name="beatles" type="radio" value="paul" /> Paul</label>
</div>
<div class="myradio">
- <label><input type="radio" name="beatles" value="george" /> George</label>
+ <label for="id_beatles_2"><input id="id_beatles_2" name="beatles" type="radio" value="george" /> George</label>
</div>
<div class="myradio">
- <label><input type="radio" name="beatles" value="ringo" /> Ringo</label>
+ <label for="id_beatles_3"><input id="id_beatles_3" name="beatles" type="radio" value="ringo" /> Ringo</label>
</div>
That included the ``<label>`` tags. To get more granular, you can use each
- radio button's ``tag`` and ``choice_label`` attributes. For example, this template...
+ radio button's ``tag``, ``choice_label`` and ``id_for_label`` attributes.
+ For example, this template...
.. code-block:: html+django
{% for radio in myform.beatles %}
- <label>
+ <label for="{{ radio.id_for_label }}">
{{ radio.choice_label }}
<span class="radio">{{ radio.tag }}</span>
</label>
@@ -618,31 +614,41 @@ Selector and checkbox widgets
.. code-block:: html
- <label>
- John
- <span class="radio"><input type="radio" name="beatles" value="john" /></span>
- </label>
- <label>
- Paul
- <span class="radio"><input type="radio" name="beatles" value="paul" /></span>
- </label>
- <label>
- George
- <span class="radio"><input type="radio" name="beatles" value="george" /></span>
- </label>
- <label>
- Ringo
- <span class="radio"><input type="radio" name="beatles" value="ringo" /></span>
- </label>
+ <label for="id_beatles_0">
+ John
+ <span class="radio"><input id="id_beatles_0" name="beatles" type="radio" value="john" /></span>
+ </label>
+
+ <label for="id_beatles_1">
+ Paul
+ <span class="radio"><input id="id_beatles_1" name="beatles" type="radio" value="paul" /></span>
+ </label>
- If you decide not to loop over the radio buttons -- e.g., if your template simply includes
- ``{{ myform.beatles }}`` -- they'll be output in a ``<ul>`` with ``<li>`` tags, as above.
+ <label for="id_beatles_2">
+ George
+ <span class="radio"><input id="id_beatles_2" name="beatles" type="radio" value="george" /></span>
+ </label>
+
+ <label for="id_beatles_3">
+ Ringo
+ <span class="radio"><input id="id_beatles_3" name="beatles" type="radio" value="ringo" /></span>
+ </label>
+
+ If you decide not to loop over the radio buttons -- e.g., if your template
+ simply includes ``{{ myform.beatles }}`` -- they'll be output in a ``<ul>``
+ with ``<li>`` tags, as above.
.. versionchanged:: 1.6
The outer ``<ul>`` container will now receive the ``id`` attribute defined on
the widget.
+.. versionchanged:: 1.7
+
+ When looping over the radio buttons, the ``label`` and ``input`` tags include
+ ``for`` and ``id`` attributes, respectively. Each radio button has an
+ ``id_for_label`` attribute to output the element's ID.
+
``CheckboxSelectMultiple``
~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -666,6 +672,12 @@ the widget.
Like :class:`RadioSelect`, you can now loop over the individual checkboxes making
up the lists. See the documentation of :class:`RadioSelect` for more details.
+.. versionchanged:: 1.7
+
+ When looping over the checkboxes, the ``label`` and ``input`` tags include
+ ``for`` and ``id`` attributes, respectively. Each checkbox has an
+ ``id_for_label`` attribute to output the element's ID.
+
.. _file-upload-widgets:
File upload widgets
diff --git a/docs/ref/models/fields.txt b/docs/ref/models/fields.txt
index 01215884c4..a9673ce3d2 100644
--- a/docs/ref/models/fields.txt
+++ b/docs/ref/models/fields.txt
@@ -757,21 +757,16 @@ directory on the filesystem. Has three special arguments, of which the first is
.. attribute:: FilePathField.allow_files
- .. versionadded:: 1.5
-
Optional. Either ``True`` or ``False``. Default is ``True``. Specifies
whether files in the specified location should be included. Either this or
:attr:`~FilePathField.allow_folders` must be ``True``.
.. attribute:: FilePathField.allow_folders
- .. versionadded:: 1.5
-
Optional. Either ``True`` or ``False``. Default is ``False``. Specifies
whether folders in the specified location should be included. Either this
or :attr:`~FilePathField.allow_files` must be ``True``.
-
Of course, these arguments can be used together.
The one potential gotcha is that :attr:`~FilePathField.match` applies to the
@@ -980,12 +975,6 @@ Like all :class:`CharField` subclasses, :class:`URLField` takes the optional
:attr:`~CharField.max_length` argument. If you don't specify
:attr:`~CharField.max_length`, a default of 200 is used.
-.. versionadded:: 1.5
-
- The current value of the field will be displayed as a clickable link above the
- input widget.
-
-
Relationship fields
===================
diff --git a/docs/ref/models/instances.txt b/docs/ref/models/instances.txt
index cb8570afdc..015393a408 100644
--- a/docs/ref/models/instances.txt
+++ b/docs/ref/models/instances.txt
@@ -388,8 +388,6 @@ For more details, see the documentation on :ref:`F() expressions
Specifying which fields to save
-------------------------------
-.. versionadded:: 1.5
-
If ``save()`` is passed a list of field names in keyword argument
``update_fields``, only the fields named in that list will be updated.
This may be desirable if you want to update just one or a few fields on
@@ -494,6 +492,40 @@ using ``__str__()`` like this::
# first_name and last_name will be unicode strings.
return force_bytes('%s %s' % (self.first_name, self.last_name))
+``__eq__``
+----------
+
+.. method:: Model.__eq__()
+
+The equality method is defined such that instances with the same primary
+key value and the same concrete class are considered equal. For proxy
+models, concrete class is defined as the model's first non-proxy parent;
+for all other models it is simply the model's class.
+
+For example::
+
+ form django.db import models
+
+ class MyModel(models.Model):
+ id = models.AutoField(primary_key=True)
+
+ class MyProxyModel(MyModel):
+ class Meta:
+ proxy = True
+
+ class MultitableInherited(MyModel):
+ pass
+
+ MyModel(id=1) == MyModel(id=1)
+ MyModel(id=1) == MyProxyModel(id=1)
+ MyModel(id=1) != MultitableInherited(id=1)
+ MyModel(id=1) != MyModel(id=2)
+
+.. versionchanged:: 1.7
+
+ In previous versions only instances of the exact same class and same
+ primary key value were considered equal.
+
``get_absolute_url``
--------------------
diff --git a/docs/ref/models/options.txt b/docs/ref/models/options.txt
index f49ba7a5c0..baa24f63cb 100644
--- a/docs/ref/models/options.txt
+++ b/docs/ref/models/options.txt
@@ -286,8 +286,6 @@ Django quotes column and table names behind the scenes.
.. attribute:: Options.index_together
- .. versionadded:: 1.5
-
Sets of field names that, taken together, are indexed::
index_together = [
diff --git a/docs/ref/models/querysets.txt b/docs/ref/models/querysets.txt
index 0f08022179..910f7d94d5 100644
--- a/docs/ref/models/querysets.txt
+++ b/docs/ref/models/querysets.txt
@@ -913,7 +913,7 @@ needed by ``select_related``), it is able to detect that the ``best_pizza``
objects have already been fetched, and it will skip fetching them again.
Chaining ``prefetch_related`` calls will accumulate the lookups that are
-prefetched. To clear any ``prefetch_related`` behavior, pass `None` as a
+prefetched. To clear any ``prefetch_related`` behavior, pass ``None`` as a
parameter::
>>> non_prefetched = qs.prefetch_related(None)
@@ -1149,13 +1149,11 @@ to ``defer()``::
# Load all fields immediately.
my_queryset.defer(None)
-.. versionchanged:: 1.5
-
- Some fields in a model won't be deferred, even if you ask for them. You can
- never defer the loading of the primary key. If you are using
- :meth:`select_related()` to retrieve related models, you shouldn't defer the
- loading of the field that connects from the primary model to the related
- one, doing so will result in an error.
+Some fields in a model won't be deferred, even if you ask for them. You can
+never defer the loading of the primary key. If you are using
+:meth:`select_related()` to retrieve related models, you shouldn't defer the
+loading of the field that connects from the primary model to the related
+one, doing so will result in an error.
.. note::
@@ -1178,8 +1176,6 @@ to ``defer()``::
reader, is slightly faster and consumes a little less memory in the Python
process.
-.. versionchanged:: 1.5
-
.. note::
When calling :meth:`~django.db.models.Model.save()` for instances with
@@ -1227,16 +1223,14 @@ All of the cautions in the note for the :meth:`defer` documentation apply to
``only()`` as well. Use it cautiously and only after exhausting your other
options.
-.. versionchanged:: 1.5
-
- Using :meth:`only` and omitting a field requested using
- :meth:`select_related` is an error as well.
+Using :meth:`only` and omitting a field requested using :meth:`select_related`
+is an error as well.
- .. note::
+.. note::
- When calling :meth:`~django.db.models.Model.save()` for instances with
- deferred fields, only the loaded fields will be saved. See
- :meth:`~django.db.models.Model.save()` for more details.
+ When calling :meth:`~django.db.models.Model.save()` for instances with
+ deferred fields, only the loaded fields will be saved. See
+ :meth:`~django.db.models.Model.save()` for more details.
using
~~~~~
@@ -1567,10 +1561,6 @@ The ``batch_size`` parameter controls how many objects are created in single
query. The default is to create all objects in one batch, except for SQLite
where the default is such that at maximum 999 variables per query is used.
-.. versionadded:: 1.5
-
- The ``batch_size`` parameter was added in version 1.5.
-
count
~~~~~
@@ -1900,10 +1890,6 @@ methods on your models. It does, however, emit the
:data:`~django.db.models.signals.post_delete` signals for all deleted objects
(including cascaded deletions).
-.. versionadded:: 1.5
-
- Allow fast-path deletion of objects.
-
Django needs to fetch objects into memory to send signals and handle cascades.
However, if there are no cascades and no signals, then Django may take a
fast-path and delete objects without fetching into memory. For large
@@ -1911,7 +1897,7 @@ deletes this can result in significantly reduced memory usage. The amount of
executed queries can be reduced, too.
ForeignKeys which are set to :attr:`~django.db.models.ForeignKey.on_delete`
-DO_NOTHING do not prevent taking the fast-path in deletion.
+``DO_NOTHING`` do not prevent taking the fast-path in deletion.
Note that the queries generated in object deletion is an implementation
detail subject to change.
diff --git a/docs/ref/request-response.txt b/docs/ref/request-response.txt
index c57a1470d6..a4ed6a2645 100644
--- a/docs/ref/request-response.txt
+++ b/docs/ref/request-response.txt
@@ -93,10 +93,6 @@ All attributes should be considered read-only, unless stated otherwise below.
non-form data posted in the request, access this through the
:attr:`HttpRequest.body` attribute instead.
- .. versionchanged:: 1.5
-
- Before Django 1.5, HttpRequest.POST contained non-form data.
-
It's possible that a request can come in via POST with an empty ``POST``
dictionary -- if, say, a form is requested via the POST HTTP method but
does not include form data. Therefore, you shouldn't use ``if request.POST``
@@ -196,8 +192,6 @@ All attributes should be considered read-only, unless stated otherwise below.
.. attribute:: HttpRequest.resolver_match
- .. versionadded:: 1.5
-
An instance of :class:`~django.core.urlresolvers.ResolverMatch` representing
the resolved url. This attribute is only set after url resolving took place,
which means it's available in all views but not in middleware methods which
@@ -824,8 +818,6 @@ types of HTTP responses. Like ``HttpResponse``, these subclasses live in
StreamingHttpResponse objects
=============================
-.. versionadded:: 1.5
-
.. class:: StreamingHttpResponse
The :class:`StreamingHttpResponse` class is used to stream a response from
diff --git a/docs/ref/settings.txt b/docs/ref/settings.txt
index 38d7275aed..424f7d5795 100644
--- a/docs/ref/settings.txt
+++ b/docs/ref/settings.txt
@@ -1108,6 +1108,19 @@ Default: ``2621440`` (i.e. 2.5 MB).
The maximum size (in bytes) that an upload will be before it gets streamed to
the file system. See :doc:`/topics/files` for details.
+.. setting:: FILE_UPLOAD_DIRECTORY_PERMISSIONS
+
+FILE_UPLOAD_DIRECTORY_PERMISSIONS
+---------------------------------
+
+.. versionadded:: 1.7
+
+Default: ``None``
+
+The numeric mode to apply to directories created in the process of
+uploading files. This value mirrors the functionality and caveats of
+the :setting:`FILE_UPLOAD_PERMISSIONS` setting.
+
.. setting:: FILE_UPLOAD_PERMISSIONS
FILE_UPLOAD_PERMISSIONS
@@ -1529,6 +1542,8 @@ unpredictable value.
:djadmin:`django-admin.py startproject <startproject>` automatically adds a
randomly-generated ``SECRET_KEY`` to each new project.
+Django will refuse to start if :setting:`SECRET_KEY` is not set.
+
.. warning::
**Keep this value secret.**
@@ -1537,10 +1552,6 @@ randomly-generated ``SECRET_KEY`` to each new project.
security protections, and can lead to privilege escalation and remote code
execution vulnerabilities.
-.. versionchanged:: 1.5
-
- Django will now refuse to start if :setting:`SECRET_KEY` is not set.
-
.. setting:: SECURE_PROXY_SSL_HEADER
SECURE_PROXY_SSL_HEADER
@@ -2095,13 +2106,9 @@ The URL where requests are redirected after login when the
This is used by the :func:`~django.contrib.auth.decorators.login_required`
decorator, for example.
-.. versionchanged:: 1.5
-
- This setting now also accepts view function names and
- :ref:`named URL patterns <naming-url-patterns>` which can be used to reduce
- configuration duplication since you no longer have to define the URL in two
- places (``settings`` and URLconf).
- For backward compatibility reasons the default remains unchanged.
+This setting also accepts view function names and :ref:`named URL patterns
+<naming-url-patterns>` which can be used to reduce configuration duplication
+since you don't have to define the URL in two places (``settings`` and URLconf).
.. setting:: LOGIN_URL
@@ -2113,13 +2120,9 @@ Default: ``'/accounts/login/'``
The URL where requests are redirected for login, especially when using the
:func:`~django.contrib.auth.decorators.login_required` decorator.
-.. versionchanged:: 1.5
-
- This setting now also accepts view function names and
- :ref:`named URL patterns <naming-url-patterns>` which can be used to reduce
- configuration duplication since you no longer have to define the URL in two
- places (``settings`` and URLconf).
- For backward compatibility reasons the default remains unchanged.
+This setting also accepts view function names and :ref:`named URL patterns
+<naming-url-patterns>` which can be used to reduce configuration duplication
+since you don't have to define the URL in two places (``settings`` and URLconf).
.. setting:: LOGOUT_URL
@@ -2249,7 +2252,9 @@ Controls where Django stores message data. Valid values are:
See :ref:`message storage backends <message-storage-backends>` for more details.
-The backends that use cookies -- ``CookieStorage`` and ``FallbackStorage`` --
+The backends that use cookies --
+:class:`~django.contrib.messages.storage.cookie.CookieStorage` and
+:class:`~django.contrib.messages.storage.fallback.FallbackStorage` --
use the value of :setting:`SESSION_COOKIE_DOMAIN` when setting their cookies.
.. setting:: MESSAGE_TAGS
diff --git a/docs/ref/signals.txt b/docs/ref/signals.txt
index ca1668000c..8381a49a09 100644
--- a/docs/ref/signals.txt
+++ b/docs/ref/signals.txt
@@ -118,8 +118,6 @@ Arguments sent with this signal:
``using``
The database alias being used.
-.. versionadded:: 1.5
-
``update_fields``
The set of fields to update explicitly specified in the ``save()`` method.
``None`` if this argument was not used in the ``save()`` call.
@@ -153,8 +151,6 @@ Arguments sent with this signal:
``using``
The database alias being used.
-.. versionadded:: 1.5
-
``update_fields``
The set of fields to update explicitly specified in the ``save()`` method.
``None`` if this argument was not used in the ``save()`` call.
@@ -522,14 +518,7 @@ request_finished
.. data:: django.core.signals.request_finished
:module:
-Sent when Django finishes processing an HTTP request.
-
-.. versionchanged:: 1.5
-
- Before Django 1.5, this signal was sent before delivering content to the
- client. In order to accommodate :ref:`streaming responses
- <httpresponse-streaming>`, it is now sent after the response has been fully
- delivered to the client.
+Sent when Django finishes delvering an HTTP response to the client.
.. note::
diff --git a/docs/ref/template-response.txt b/docs/ref/template-response.txt
index a8fb8dfee6..47c012e12a 100644
--- a/docs/ref/template-response.txt
+++ b/docs/ref/template-response.txt
@@ -75,16 +75,10 @@ Methods
The HTTP Status code for the response.
``content_type``
-
- .. versionchanged:: 1.5
-
- Historically, this parameter was only called ``mimetype`` (now
- deprecated), but since this is actually the value included in the HTTP
- ``Content-Type`` header, it can also include the character set
- encoding, which makes it more than just a MIME type specification. If
- ``content_type`` is specified, then its value is used. Otherwise,
- :setting:`DEFAULT_CONTENT_TYPE` is used.
-
+ The value included in the HTTP ``Content-Type`` header, including the
+ MIME type specification and the character set encoding. If
+ ``content_type`` is specified, then its value is used. Otherwise,
+ :setting:`DEFAULT_CONTENT_TYPE` is used.
.. method:: SimpleTemplateResponse.resolve_context(context)
@@ -167,13 +161,8 @@ Methods
The HTTP Status code for the response.
``content_type``
-
- .. versionchanged:: 1.5
-
- Historically, this parameter was only called ``mimetype`` (now
- deprecated), but since this is actually the value included in the HTTP
- ``Content-Type`` header, it can also include the character set
- encoding, which makes it more than just a MIME type specification. If
+ The value included in the HTTP ``Content-Type`` header, including the
+ MIME type specification and the character set encoding. If
``content_type`` is specified, then its value is used. Otherwise,
:setting:`DEFAULT_CONTENT_TYPE` is used.
diff --git a/docs/ref/templates/api.txt b/docs/ref/templates/api.txt
index 87822fe7f8..05f8c249c5 100644
--- a/docs/ref/templates/api.txt
+++ b/docs/ref/templates/api.txt
@@ -274,11 +274,6 @@ Builtin variables
Every context contains ``True``, ``False`` and ``None``. As you would expect,
these variables resolve to the corresponding Python objects.
-.. versionadded:: 1.5
-
- Before Django 1.5, these variables weren't a special case, and they
- resolved to ``None`` unless you defined them in the context.
-
Playing with Context objects
----------------------------
diff --git a/docs/ref/templates/builtins.txt b/docs/ref/templates/builtins.txt
index afb6e4b123..5b02ab22d1 100644
--- a/docs/ref/templates/builtins.txt
+++ b/docs/ref/templates/builtins.txt
@@ -1059,22 +1059,14 @@ by the context as to the current application.
.. warning::
- Don't forget to put quotes around the function path or pattern name!
-
- .. versionchanged:: 1.5
-
- The first parameter used not to be quoted, which was inconsistent with
- other template tags. Since Django 1.5, it is evaluated according to
- the usual rules: it can be a quoted string or a variable that will be
- looked up in the context.
+ Don't forget to put quotes around the function path or pattern name,
+ otherwise the value will be interpreted as a context variable!
.. templatetag:: verbatim
verbatim
^^^^^^^^
-.. versionadded:: 1.5
-
Stops the template engine from rendering the contents of this block tag.
A common use is to allow a Javascript template layer that collides with
@@ -1108,6 +1100,14 @@ If ``this_value`` is 175, ``max_value`` is 200, and ``max_width`` is 100, the
image in the above example will be 88 pixels wide
(because 175/200 = .875; .875 * 100 = 87.5 which is rounded up to 88).
+.. versionchanged:: 1.7
+
+In some cases you might want to capture the result of ``widthratio`` in a
+variable. It can be useful, for instance, in a :ttag:`blocktrans` like this::
+
+ {% widthratio this_value max_value max_width as width %}
+ {% blocktrans %}The width is: {{ width }}{% endblocktrans %}
+
.. templatetag:: with
with
@@ -2403,8 +2403,6 @@ It is also able to consume standard context variables, e.g. assuming a
If you'd like to retrieve a static URL without displaying it, you can use a
slightly different call:
-.. versionadded:: 1.5
-
.. code-block:: html+django
{% load static %}
diff --git a/docs/ref/unicode.txt b/docs/ref/unicode.txt
index c9534c12c9..306a2dfb48 100644
--- a/docs/ref/unicode.txt
+++ b/docs/ref/unicode.txt
@@ -45,28 +45,26 @@ rendering or anywhere else -- you have two choices for encoding those strings.
You can use Unicode strings, or you can use normal strings (sometimes called
"bytestrings") that are encoded using UTF-8.
-.. versionchanged:: 1.5
+In Python 3, the logic is reversed, that is normal strings are Unicode, and
+when you want to specifically create a bytestring, you have to prefix the
+string with a 'b'. As we are doing in Django code from version 1.5,
+we recommend that you import ``unicode_literals`` from the __future__ library
+in your code. Then, when you specifically want to create a bytestring literal,
+prefix the string with 'b'.
- In Python 3, the logic is reversed, that is normal strings are Unicode, and
- when you want to specifically create a bytestring, you have to prefix the
- string with a 'b'. As we are doing in Django code from version 1.5,
- we recommend that you import ``unicode_literals`` from the __future__ library
- in your code. Then, when you specifically want to create a bytestring literal,
- prefix the string with 'b'.
+Python 2 legacy::
- Python 2 legacy::
+ my_string = "This is a bytestring"
+ my_unicode = u"This is an Unicode string"
- my_string = "This is a bytestring"
- my_unicode = u"This is an Unicode string"
+Python 2 with unicode literals or Python 3::
- Python 2 with unicode literals or Python 3::
-
- from __future__ import unicode_literals
+ from __future__ import unicode_literals
- my_string = b"This is a bytestring"
- my_unicode = "This is an Unicode string"
+ my_string = b"This is a bytestring"
+ my_unicode = "This is an Unicode string"
- See also :doc:`Python 3 compatibility </topics/python3>`.
+See also :doc:`Python 3 compatibility </topics/python3>`.
.. warning::
diff --git a/docs/ref/utils.txt b/docs/ref/utils.txt
index d31de35006..a093de18b7 100644
--- a/docs/ref/utils.txt
+++ b/docs/ref/utils.txt
@@ -204,8 +204,6 @@ The functions defined in this module share the following properties:
.. function:: smart_text(s, encoding='utf-8', strings_only=False, errors='strict')
- .. versionadded:: 1.5
-
Returns a text object representing ``s`` -- ``unicode`` on Python 2 and
``str`` on Python 3. Treats bytestrings using the ``encoding`` codec.
@@ -225,8 +223,6 @@ The functions defined in this module share the following properties:
.. function:: force_text(s, encoding='utf-8', strings_only=False, errors='strict')
- .. versionadded:: 1.5
-
Similar to ``smart_text``, except that lazy instances are resolved to
strings, rather than kept as lazy objects.
@@ -239,8 +235,6 @@ The functions defined in this module share the following properties:
.. function:: smart_bytes(s, encoding='utf-8', strings_only=False, errors='strict')
- .. versionadded:: 1.5
-
Returns a bytestring version of ``s``, encoded as specified in
``encoding``.
@@ -249,8 +243,6 @@ The functions defined in this module share the following properties:
.. function:: force_bytes(s, encoding='utf-8', strings_only=False, errors='strict')
- .. versionadded:: 1.5
-
Similar to ``smart_bytes``, except that lazy instances are resolved to
bytestrings, rather than kept as lazy objects.
@@ -745,8 +737,6 @@ appropriate entities.
.. class:: SafeBytes
- .. versionadded:: 1.5
-
A ``bytes`` subclass that has been specifically marked as "safe"
(requires no further escaping) for HTML output purposes.
@@ -758,8 +748,6 @@ appropriate entities.
.. class:: SafeText
- .. versionadded:: 1.5
-
A ``str`` (in Python 3) or ``unicode`` (in Python 2) subclass
that has been specifically marked as "safe" for HTML output purposes.
@@ -977,8 +965,6 @@ For a complete discussion on the usage of the following see the
``None``, the :ref:`current time zone <default-current-time-zone>` is unset
on entry with :func:`deactivate()` instead.
-.. versionadded:: 1.5
-
.. function:: localtime(value, timezone=None)
Converts an aware :class:`~datetime.datetime` to a different time zone,