Ce document présente les échéances où divers aspects de Django seront supprimés ou modifiés de manière non rétrocompatible, après une période d’obsolescence, en accord avec la politique d’obsolescence. Plus de détails sur ces différents éléments sont souvent disponibles dans les notes de publication les précédant de deux versions.
See the Django 5.2 release notes for more details on these changes.
The all
keyword argument of django.contrib.staticfiles.finders.find()
will be removed.
The fallback to request.user
when user
is None
in
django.contrib.auth.login()
and django.contrib.auth.alogin()
will be
removed.
The ordering
keyword argument of the PostgreSQL specific aggregation
functions django.contrib.postgres.aggregates.ArrayAgg
,
django.contrib.postgres.aggregates.JSONBAgg
, and
django.contrib.postgres.aggregates.StringAgg
will be removed.
Consultez les notes de publication de Django 5.0 pour plus de détails sur ces changements.
Les producteurs de formulaires de transition DjangoDivFormRenderer
et Jinja2DivFormRenderer
seront supprimés.
La prise en charge des arguments positionnels à BaseConstraint
sera supprimée.
request
sera obligatoire dans la signature des sous-classes de ModelAdmin.lookup_allowed()
.
django.db.models.sql.datastructures.Join
ne fera plus appel à get_joining_columns()
.
La méthode get_joining_columns()
de ForeignObject
et de ForeignObjectRel
sera supprimée.
La méthode ForeignObject.get_reverse_joining_columns()
sera supprimée.
Le protocole par défaut de forms.URLField
passera de "http"
à "https"
.
La prise en charge de l’appel à format_html()
sans transmettre d’arguments, nommés ou pas, sera supprimée.
La prise en charge de cx_Oracle
sera supprimée.
BaseDatabaseOperations.field_cast_sql()
sera supprimée.
L’alias ChoicesMeta
de django.db.models.enums.ChoicesType
sera supprimé.
La méthode Prefetch.get_current_queryset()
sera supprimée.
La méthode get_prefetch_queryset()
des gestionnaires de liaison et des descripteurs sera supprimée.
get_prefetcher()
et prefetch_related_objects()
ne se rabattront plus vers get_prefetch_queryset()
.
Le réglage temporaire FORMS_URLFIELD_ASSUME_HTTPS
sera supprimé.
Consultez les notes de publication de Django 5.1 pour plus de détails sur ces changements.
Les méthodes ModelAdmin.log_deletion()
et LogEntryManager.log_action()
seront supprimées.
La fonction non documentée django.utils.itercompat.is_iterable()
et le module django.utils.itercompat
seront supprimés.
La méthode django.contrib.gis.geoip2.GeoIP2.coords()
sera supprimée.
La méthode django.contrib.gis.geoip2.GeoIP2.open()
sera supprimée.
La prise en charge des arguments positionnels à Model.save()
et Model.asave()
sera supprimée.
La possibilité de définir la valeur django.contrib.gis.gdal.OGRGeometry.coord_dim
sera supprimée.
django.urls.register_converter()
ne permettra plus de surcharger des convertisseurs existants.
Le paramètre nommé check
de CheckConstraint
sera supprimé.
L’attribut OS_OPEN_FLAGS
de FileSystemStorage
sera supprimé.
La méthode get_cache_name()
de FieldCacheMixin
sera supprimée.
Consultez les notes de publication de Django 4.2 pour plus de détails sur ces changements.
La méthode BaseUserManager.make_random_password()
sera supprimée.
L’option de modèle Meta.index_together
sera supprimée.
Le filtre de gabarit length_is
sera supprimé.
Les classes django.contrib.auth.hashers.SHA1PasswordHasher`, django.contrib.auth.hashers.UnsaltedSHA1PasswordHasher
et django.contrib.auth.hashers.UnsaltedMD5PasswordHasher
seront supprimées.
Les modèles django.contrib.postgres.fields.CICharField
, django.contrib.postgres.fields.CIEmailField
et django.contrib.postgres.fields.CITextField
seront supprimés. Des champs factices resteront pour assurer la compatibilité avec les migrations historiques.
La classe mixin django.contrib.postgres.fields.CIText
sera supprimée.
Les attributs map_width
et map_height
de BaseGeometryWidget
seront supprimés.
La méthode SimpleTestCase.assertFormsetError()
sera supprimée.
La méthode TransactionTestCase.assertQuerysetEqual()
sera supprimée.
La prise en charge des chaînes littérales encodées en JSON à JSONField
et aux requêtes et expressions associées sera supprimée.
La prise en charge des arguments positionnels à Signer
et TimestampSigner
sera supprimée.
Les réglages DEFAULT_FILE_STORAGE
et STATICFILES_STORAGE
seront supprimés.
La fonction django.core.files.storage.get_storage_class()
sera supprimée.
Consultez les notes de publication de Django 4.0 pour plus de détails sur ces changements.
Le réglage de test SERIALIZE
sera supprimé.
Le module non documenté django.utils.baseconv
sera supprimé.
Le module non documenté django.utils.datetime_safe
sera supprimé.
La valeur par défaut du réglage USE_TZ
va changer de False
à True
.
Le protocole par défaut pour les plans de site construits en dehors du contexte de la requête changera de 'http'
à 'https'
.
L’argument extra_tests
de DiscoverRunner.build_suite()
et de DiscoverRunner.run_tests()
sera supprimé.
Les agrégats django.contrib.postgres.aggregates.ArrayAgg
, JSONBAgg
et StringAgg
renvoient None
lorsqu’il n’y a aucun résultat, au lieu de []
, []
et ''
, respectivement.
Le réglage USE_L10N
sera supprimé.
Le réglage temporaire USE_DEPRECATED_PYTZ
sera supprimé.
La prise en charge des fuseaux horaires pytz
sera supprimée.
Le paramètre is_dst
sera supprimé de :
QuerySet.datetimes()
django.utils.timezone.make_aware()
django.db.models.functions.Trunc()
django.db.models.functions.TruncSecond()
django.db.models.functions.TruncMinute()
django.db.models.functions.TruncHour()
django.db.models.functions.TruncDay()
django.db.models.functions.TruncWeek()
django.db.models.functions.TruncMonth()
django.db.models.functions.TruncQuarter()
django.db.models.functions.TruncYear()
Les classes django.contrib.gis.admin.GeoModelAdmin
et OSMGeoAdmin
seront supprimées.
La méthode non documentée BaseForm._html_output()
sera supprimée.
La capacité de renvoyer une chaîne str
au lieu d’une instance SafeString
, lors de la production d’un ErrorDict
ou d’ErrorList
sera supprimée.
Consultez les notes de publication de Django 4.1 pour plus de détails sur ces changements.
La méthode SitemapIndexItem.__str__()
sera supprimée.
Le réglage temporaire CSRF_COOKIE_MASKED
sera supprimé.
L’argument name
de django.utils.functional.cached_property()
sera supprimé.
L’argument opclasses
de django.contrib.postgres.constraints.ExclusionConstraint
sera supprimé.
La capacité non documentée de transmettre errors=None
à SimpleTestCase.assertFormError()
et assertFormsetError()
sera supprimée.
django.contrib.sessions.serializers.PickleSerializer
sera supprimé.
L’utilisation de QuerySet.iterator()
sur un jeu de requête qui précharge les objets liés sans fournir l’argument chunk_size
ne sera plus autorisée.
La transmission d’instances de modèles non enregistrées à des filtres de modèles liés ne sera plus autorisée.
created=True
sera obligatoire dans la signature des sous-classes de RemoteUserBackend.configure_user()
.
La prise en charge de la déconnexion par des requêtes GET
dans les vues django.contrib.auth.views.LogoutView
et django.contrib.auth.views.logout_then_login()
sera supprimée.
L’alias django.utils.timezone.utc
vers datetime.timezone.utc
sera supprimé.
La transmission d’un objet réponse et d’un nom de formulaire à SimpleTestCase.assertFormError()
et assertFormsetError()
ne sera plus autorisée.
Le composant django.contrib.gis.admin.OpenLayersWidget
sera supprimé.
django.contrib.auth.hashers.CryptPasswordHasher
sera supprimé.
Les gabarits "django/forms/default.html"
et "django/forms/formsets/default.html"
seront supprimés.
La possibilité de passer nulls_first=False
ou nulls_last=False
aux méthodes Expression.asc()
et Expression.desc()
et à l’expression OrderBy
sera supprimée.
Consultez les notes de publication de Django 3.2 pour plus de détails sur ces changements.
La prise en charge de l’attribution d’objets ne pouvant pas être copiés profondément par copy.deepcopy()
à des attributs de classe dans TestCase.setUpTestData()
sera supprimée.
BaseCommand.requires_system_checks
ne prendra plus en charge les valeurs booléennes.
L’argument whitelist
et l’attribut domain_whitelist
de django.core.validators.EmailValidator
seront supprimés.
La variable de module default_app_config
sera supprimée.
TransactionTestCase.assertQuerysetEqual()
n’appellera plus automatiquement repr()
sur un jeu de requête lors de comparaisons avec des valeurs textuelles.
django.core.cache.backends.memcached.MemcachedCache
sera supprimée.
La prise en charge du format des messages d’avant Django 3.2 utilisé par django.contrib.messages.storage.cookie.CookieStorage
sera supprimée.
Consultez les notes de publication de Django 3.0 pour plus de détails sur ces changements.
django.utils.http.urlquote()
, urlquote_plus()
, urlunquote()
et urlunquote_plus()
seront supprimées.
django.utils.encoding.force_text()
et smart_text()
seront supprimées.
django.utils.translation.ugettext()
, ugettext_lazy()
, ugettext_noop()
, ungettext()
et ungettext_lazy()
seront supprimées.
django.views.i18n.set_language()
ne définira plus la langue de l’utilisateur dans request.session
(clé django.utils.translation.LANGUAGE_SESSION_KEY
).
alias=None
sera obligatoire dans la signature des sous-classes de django.db.models.Expression.get_group_by_cols()
.
django.utils.text.unescape_entities()
sera supprimée.
django.utils.http.is_safe_url()
sera supprimée.
Consultez les notes de publication de Django 3.1 pour plus de détails sur ces changements.
Le réglage PASSWORD_RESET_TIMEOUT_DAYS
sera supprimé.
L’utilisation non documentée de l’expression de requête isnull
avec des valeurs non booléennes dans la partie droite ne sera plus autorisée.
La classe d’exception django.db.models.query_utils.InvalidQuery
sera supprimée.
Le point d’entrée django-admin.py
sera supprimé.
La méthode HttpRequest.is_ajax()
sera supprimée.
La prise en charge du format de codage des cookies d’avant Django 3.1 utilisé par django.contrib.messages.storage.cookie.CookieStorage
sera supprimée.
La prise en charge des jetons de réinitialisation des mots de passe d’avant Django 3.1 dans le site d’administration (qui utilise l’algorithme de hachage SHA-1) sera supprimée.
La prise en charge du format de codage des sessions d’avant Django 3.1 sera supprimée.
La prise en charge des signatures django.core.signing.Signer
d’avant Django 3.1 (utilisant l’algorithme de hachage SHA-1) sera supprimée.
La prise en charge des signatures django.core.signing.dumps()
d’avant Django 3.1 (utilisant l’algorithme de hachage SHA-1) sera supprimée dans django.core.signing.loads()
.
La prise en charge des sessions d’utilisateurs d’avant Django 3.1 (utilisant l’algorithme de hachage SHA-1) sera supprimée.
L’argument get_response
de django.utils.deprecation.MiddlewareMixin.__init__()
sera obligatoire et n’acceptera plus None
.
L’argument providing_args
de django.dispatch.Signal
sera supprimé.
Le paramètre length
de django.utils.crypto.get_random_string()
sera obligatoire.
Le message list
de ModelMultipleChoiceField
sera supprimé.
La prise en charge de la transmission d’alias de colonnes bruts à QuerySet.order_by()
sera supprimée.
Le modèle NullBooleanField
sera supprimé. Un champ factice restera pour des raisons de compatibilité avec les migrations historiques.
django.conf.urls.url()
sera supprimée.
Le modèle django.contrib.postgres.fields.JSONField
sera supprimé. Un champ factice restera pour des raisons de compatibilité avec l’historique des migrations.
django.contrib.postgres.forms.JSONField
, django.contrib.postgres.fields.jsonb.KeyTransform
et django.contrib.postgres.fields.jsonb.KeyTextTransform
seront supprimés.
Les balises de gabarit {% ifequal %}
et {% ifnotequal %}
seront supprimées.
Le réglage temporaire DEFAULT_HASHING_ALGORITHM
sera supprimé.
Consultez les notes de publication de Django 2.2 pour plus de détails sur ces changements.
django.utils.timezone.FixedOffset
sera supprimée.
django.core.paginator.QuerySetPaginator
sera supprimée.
L’attribut Meta.ordering
des modèles n’affectera plus les requêtes GROUP BY
.
django.contrib.postgres.fields.FloatRangeField
et django.contrib.postgres.forms.FloatRangeField
seront supprimés.
Le réglage FILE_CHARSET
sera supprimé.
django.contrib.staticfiles.storage.CachedStaticFilesStorage
sera supprimée.
RemoteUserBackend.configure_user()
exigera request
comme premier paramètre positionnel.
La prise en charge de SimpleTestCase.allow_database_queries
et de TransactionTestCase.multi_db
sera supprimée.
Consultez les notes de publication de Django 2.0 pour plus de détails sur ces changements.
Le module django.db.backends.postgresql_psycopg2
sera supprimé.
django.shortcuts.render_to_response()
sera supprimée.
Le réglage DEFAULT_CONTENT_TYPE
sera supprimé.
HttpRequest.xreadlines()
sera supprimée.
La prise en charge du paramètre context
de Field.from_db_value()
et de Expression.convert_value()
sera supprimée.
Le paramètre nommé field_name
de QuerySet.earliest()
et de latest()
sera supprimé.
Consultez les notes de publication de Django 2.1 pour plus de détails sur ces changements.
django.contrib.gis.db.models.functions.ForceRHR
sera supprimée.
django.utils.http.cookie_date()
sera supprimée.
Les bibliothèques de balises de gabarits staticfiles
et admin_static
seront supprimées.
django.contrib.staticfiles.templatetags.static()
sera supprimée.
La couche de compatibilité pour permettre à InlineModelAdmin.has_add_permission()
d’être définie sans paramètre obj
sera supprimée.
Consultez les notes de publication de Django 1.11 pour plus de détails sur ces changements.
contrib.auth.views.login()
, logout()
, password_change()
, password_change_done()
, password_reset()
, password_reset_done()
, password_reset_confirm()
et password_reset_complete()
seront supprimées.
Le paramètre extra_context
de contrib.auth.views.logout_then_login()
sera supprimé.
django.test.runner.setup_databases()
sera supprimée.
django.utils.translation.string_concat()
sera supprimée.
django.core.cache.backends.memcached.PyLibMCCache
ne prendra plus en charge la transmission des réglages de comportement pylibmc
comme attributs de premier niveau des OPTIONS
.
Le paramètre host
de django.utils.http.is_safe_url()
sera supprimé.
Le masquage des exceptions produites lors du rendu de la balise de gabarit {% include %}
sera supprimé.
DatabaseIntrospection.get_indexes()
sera supprimée.
La méthode authenticate()
des moteurs d’authentification exigera request
comme premier paramètre positionnel.
Le décorateur django.db.models.permalink()
sera supprimé.
Le réglage USE_ETAGS
sera supprimé. CommonMiddleware
et django.utils.cache.patch_response_headers()
ne créeront plus d’ETags.
L’attribut Model._meta.has_auto_field
sera supprimé.
La prise en charge de url()
des drapeaux en ligne dans les groupes d’expressions régulières ((?i)
, (?L)
, (?m)
, (?s)
, and (?u)
) sera supprimée.
La prise en charge des méthodes Widget.render()
sans le paramètre renderer
sera supprimée.
Consultez les notes de publication de Django 1.9 pour plus de détails sur ces changements.
Le paramètre weak
de django.dispatch.signals.Signal.disconnect()
sera supprimé.
django.db.backends.base.BaseDatabaseOperations.check_aggregate_support()
sera supprimée.
Le paquet django.forms.extras
sera supprimé.
L’utilitaire assignment_tag
sera supprimé.
Le paramètre host
de assertsRedirects
sera supprimé. La couche de compatibilité qui permet de considérer les URL absolues égales aux URL relatives lorsque le chemin est identique sera également supprimée.
Field.rel
sera supprimé.
L’attribut Field.remote_field.to
sera supprimé.
Le paramètre on_delete
de ForeignKey
et OneToOneField
deviendra obligatoire.
django.db.models.fields.add_lazy_relation()
sera supprimée.
Lorsque la prise en charge des fuseaux horaires est active, les moteurs de base de données qui ne prennent pas en charge les fuseaux horaires ne vont plus convertir les dates/heures avec fuseau en valeurs UTC naïves lorsque de telles valeurs sont transmises en paramètre à des requêtes SQL exécutées en dehors de l’ORM, par exemple avec cursor.execute()
.
Le décorateur django.contrib.auth.tests.utils.skipIfCustomUser()
sera supprimé.
Les classes GeoManager
et GeoQuerySet
seront supprimées.
Le module django.contrib.gis.geoip
sera supprimé.
Le contrôle supports_recursion
pour les chargeurs de gabarit sera supprimé de :
django.template.engine.Engine.find_template()
django.template.loader_tags.ExtendsNode.find_template()
django.template.loaders.base.Loader.supports_recursion()
django.template.loaders.cached.Loader.supports_recursion()
Les méthodes de chargeur de gabarit load_template()
et load_template_sources()
seront supprimées.
Le paramètre template_dirs
des chargeurs de gabarit sera supprimé de :
django.template.loaders.base.Loader.get_template()
django.template.loaders.cached.Loader.cache_key()
django.template.loaders.cached.Loader.get_template()
django.template.loaders.cached.Loader.get_template_sources()
django.template.loaders.filesystem.Loader.get_template_sources()
La méthode django.template.loaders.base.Loader.__call__()
sera supprimée.
La prise en charge des vues d’erreur personnalisées avec un seul paramètre positionnel sera supprimée.
L’attribut mime_type
de django.utils.feedgenerator.Atom1Feed
et de django.utils.feedgenerator.RssFeed
sera supprimé en faveur de content_type
.
Le paramètre app_name
de django.conf.urls.include()
sera supprimé.
La prise en charge de la transmission d’un tuple à 3 comme premier paramètre de include()
sera supprimée.
La prise en charge de la définition de l’espace de nom d’une instance d’URL sans espace de nom d’application sera supprimée.
Field._get_val_from_obj()
sera supprimée en faveur de Field.value_from_object()
.
django.template.loaders.eggs.Loader
sera supprimée.
Le paramètre current_app
de contrib.auth
sera supprimé.
Le paramètre nommé callable_obj
de SimpleTestCase.assertRaisesMessage()
sera supprimé.
La prise en charge de l’attribut allow_tags
des méthodes ModelAdmin
sera supprimée.
Le paramètre nommé enclosure
de SyndicationFeed.add_item()
sera supprimé.
Les alias django.template.loader.LoaderOrigin
et django.template.base.StringOrigin
de django.template.base.Origin
seront supprimés.
Consultez les notes de publication de Django 1.10 pour plus de détails sur ces changements.
L’option makemigrations --exit
sera supprimée.
La prise en charge de l’attribution directe à une clé étrangère inversée ou à des relations plusieurs-à-plusieurs sera supprimée.
Les méthodes get_srid()
et set_srid()
de django.contrib.gis.geos.GEOSGeometry
seront supprimées.
Les méthodes get_x()
, set_x()
, get_y()
, set_y()
, get_z()
et set_z()
de django.contrib.gis.geos.Point
seront supprimées.
Les méthodes get_coords()
et set_coords()
de django.contrib.gis.geos.Point
seront supprimées.
La propriété cascaded_union
de django.contrib.gis.geos.MultiPolygon
sera supprimée.
django.utils.functional.allow_lazy()
sera supprimée.
L’option shell --plain
sera supprimée.
Le module django.core.urlresolvers
sera supprimé.
Le modèle CommaSeparatedIntegerField
sera supprimé. Un champ factice restera pour des raisons de compatibilité avec les migrations historiques.
La prise en charge de la méthode de gabarit Context.has_key()
sera supprimée.
La prise en charge des méthodes django.core.files.storage.Storage.accessed_time()
, created_time()
et modified_time()
sera supprimée.
Les expressions de requête utilisant le nom de modèle lorsque Meta.default_related_name
est défini ne seront plus prises en charge.
L’expression de requête __search
et la méthode DatabaseOperations.fulltext_search_sql()
seront supprimées.
Le bout de code prenant en charge les classes personnalisées de gestionnaire de champs liés sans méthode _apply_rel_filters()
sera supprimé.
L’utilisation de User.is_authenticated()
et de User.is_anonymous()
sous forme de méthode ne sera plus prise en charge.
L’attribut privé virtual_fields
de Model._meta
sera supprimé.
Les arguments nommés privés virtual_only
dans Field.contribute_to_class()
et virtual
dans Model._meta.add_field()
seront supprimés.
Les vues javascript_catalog()
et json_catalog()
seront supprimées.
La fonction django.contrib.gis.utils.precision_wkt()
sera supprimée.
Dans l’héritage multitable, la promotion implicite d’un champ OneToOneField
vers un lien parent_link
sera supprimée.
La prise en charge de Widget._format_value()
sera supprimée.
Les méthodes get_directory_name()
et get_filename()
de FileField
seront supprimées.
La fonction mark_for_escaping()
et les classes qu’elle utilise : EscapeData
, EscapeBytes
, EscapeText
, EscapeString
et EscapeUnicode
seront supprimées.
Le filtre escape
sera modifié pour utiliser django.utils.html.conditional_escape()
.
Manager.use_for_related_fields
sera supprimé.
L’héritage de Manager
des modèles va suivre les règles d’héritage MRO et l’attribut Meta.manager_inheritance_from_future
qui active ce comportement sera supprimé.
La prise en charge de l’ancien style d’intergiciel utilisant settings.MIDDLEWARE_CLASSES
sera supprimée.
Consultez les notes de publication de Django 1.8 pour plus de détails sur ces changements.
La prise en charge de l’appel direct à SQLCompiler
comme alias pour appeler sa méthode quote_name_unless_alias
sera supprimée.
Les balises de gabarit cycle
et firstof
seront supprimées de la bibliothèque de balises de gabarit future
(utilisées durant la période d’obsolescence 1.6/1.7).
django.conf.urls.patterns()
sera supprimée.
La prise en charge de l’argument prefix
de django.conf.urls.i18n.i18n_patterns()
sera supprimée.
SimpleTestCase.urls
sera supprimé.
L’utilisation d’un nombre incorrect de valeurs dépaquetées dans la balise de gabarit for
produira une exception et n’échouera plus de manière silencieuse.
La possibilité de résoudre des URL avec un chemin Python pointé sera supprimée.
La possibilité d’utiliser un chemin Python pointé pour les réglages LOGIN_URL
et LOGIN_REDIRECT_URL
sera supprimée.
La prise en charge de optparse
pour les commandes d’administration personnalisées sera supprimée (remplacée par argparse
).
La classe django.core.management.NoArgsCommand
sera supprimée. Utilisez BaseCommand
à la place, qui n’accepte aucun argument par défaut.
Le module django.core.context_processors
sera supprimé.
Le module djangodb.models.sql.aggregates
sera supprimé.
Le module django.contrib.gis.db.models.sql.aggregates
sera supprimé.
Les méthodes et propriétés suivantes de django.db.sql.query.Query
seront supprimées :
Propriétés : aggregates
et aggregate_select
Méthodes : add_aggregate
, set_aggregate_mask
et append_aggregate_mask
.
django.template.resolve_variable
sera supprimée.
Les API privées suivantes seront supprimées de django.db.models.options.Options
(Model._meta
) :
get_field_by_name()
get_all_field_names()
get_fields_with_model()
get_concrete_fields_with_model()
get_m2m_with_model()
get_all_related_objects()
get_all_related_objects_with_model()
get_all_related_many_to_many_objects()
get_all_related_m2m_objects_with_model()
Le paramètre error_message
de django.forms.RegexField
sera supprimé.
Le filtre unordered_list
ne prendra plus en charge les listes de l’ancien style.
La prise en charge des paramètres de view
sous forme de texte dans url()
sera supprimée.
La couche de rétrocompatibilité pour renommer django.forms.Form._has_changed()
en has_changed()
sera supprimée.
Le filtre de gabarit removetags
sera supprimé.
Les fonctions remove_tags()
et strip_entities()
de django.utils.html
seront supprimées.
Le paramètre is_admin_site
de django.contrib.auth.views.password_reset()
sera supprimé.
django.db.models.field.subclassing.SubfieldBase
sera supprimée.
django.utils.checksums
sera supprimée ; cette fonctionnalité est incluse dans django-localflavor
1.1+.
L’attribut original_content_type_id
de django.contrib.admin.helpers.InlineAdminForm
sera supprimé.
La couche de compatibilité pour permettre à FormMixin.get_form()
d’être définie sans valeur par défaut pour son paramètre form_class
sera supprimée.
Les réglages suivants seront supprimés :
ALLOWED_INCLUDE_ROOTS
TEMPLATE_CONTEXT_PROCESSORS
TEMPLATE_DEBUG
TEMPLATE_DIRS
TEMPLATE_LOADERS
TEMPLATE_STRING_IF_INVALID
L’alias de rétrocompatibilité django.template.loader.BaseLoader
sera supprimé.
Les objets de gabarit Django renvoyés par get_template()
et select_template()
n’accepteront plus de Context
dans leur méthode render()
.
Les API de réponse de gabarit forceront l’usage de dict
et d’objets de gabarit dépendants du moteur au lieu de respectivement Context
et de Template
.
Le paramètre current_app
sera supprimé des fonction et classes suivantes :
django.shortcuts.render()
django.template.Context()
django.template.RequestContext()
django.template.response.TemplateResponse()
Les paramètres dictionary
et context_instance
seront supprimés des fonctions suivantes :
django.shortcuts.render()
django.shortcuts.render_to_response()
django.template.loader.render_to_string()
Le paramètre dirs
sera supprimé des fonctions suivantes :
django.template.loader.get_template()
django.template.loader.select_template()
django.shortcuts.render()
django.shortcuts.render_to_response()
La vérification des sessions sera active sans tenir compte de la présence de 'django.contrib.auth.middleware.SessionAuthenticationMiddleware'
dans MIDDLEWARE_CLASSES
.
L’attribut privé django.db.models.Field.related
sera supprimé.
L’option --list
de la commande d’administration migrate
sera supprimée.
La balise de gabarit ssi
sera supprimée.
La prise en charge de l’opérateur de comparaison =
sera supprimée dans la balise de gabarit if
.
Les bouts de code de rétrocompatibilité pour permettre de définir Storage.get_available_name()
et Storage.save()
sans argument max_length
seront supprimés.
La prise en charge de l’ancienne syntaxe %(<foo>)s
dans ModelFormMixin.success_url
sera supprimée.
Les méthodes d’agrégation GeoQuerySet
collect()
, extent()
, extent3d()
, make_line()
et unionagg()
seront supprimées.
La possibilité de définir ContentType.name
lors de la création d’une instance de type de contenu sera supprimée.
La prise en charge de l’ancienne signature de allow_migrate
sera supprimée. Elle a changé de allow_migrate(self, db, model)
à allow_migrate(self, db, app_label, model_name=None, **hints)
.
La prise en charge de la syntaxe de {% cycle %}
utilisant les arguments séparés par des virgules sera supprimée.
L’avertissement que donne Signer
lorsqu’elle reçoit un séparateur non valable deviendra une exception.
Consultez les notes de publication de Django 1.7 pour plus de détails sur ces changements.
django.utils.dictconfig
sera supprimé.
django.utils.importlib
sera supprimé.
django.utils.tzinfo
sera supprimé.
django.utils.unittest
sera supprimé.
La commande syncdb
sera supprimée.
django.db.models.signals.pre_syncdb
et django.db.models.signals.post_syncdb
seront supprimés.
allow_syncdb
sur les routeurs de base de données ne deviendra plus automatiquement allow_migrate
.
La synchronisation automatique des applications sans migrations sera supprimée. Les migrations deviendront obligatoires pour toutes les applications sauf quand l’option --run-syncdb
est transmise à la commande migrate
.
Les commandes d’administration SQL pour les applications sans migrations sql
, sqlall
, sqlclear
, sqldropindexes
et sqlindexes
seront supprimées.
La prise en charge du chargement automatique des instantanés initial_data
et des données SQL initiales sera supprimée.
Tous les modèles devront être définis dans une application installée ou déclarer une option app_label
explicite. De plus, il ne sera plus possible de les importer avant que leur application soit chargée. En particulier, il ne sera plus possible d’importer des modèles dans le paquet racine de leur application.
Les champ de modèle et de formulaire IPAddressField
seront supprimés. Un champ de substitution restera pour des raisons de compatibilité avec l’historique des migrations.
AppCommand.handle_app()
ne sera plus prise en charge.
RequestSite
et get_current_site()
ne pourront plus être importés à partir de django.contrib.sites.models
.
La prise en charge de FastCGI par la commande d’administration runfcgi
sera supprimée. Veuillez déployer votre projet avec WSGI.
django.utils.datastructures.SortedDict
sera supprimé. Utilisez à la place collections.OrderedDict
de la bibliothèque Python standard.
ModelAdmin.declared_fieldsets
sera supprimé.
Les instances de fichier util.py
dans la base de code de Django ont été renommées en utils.py
dans un effort d’unification de toutes les références à util
et utils
. Les modules qui garantissent une rétrocompatibilité seront supprimés.
django.contrib.admin.util
django.contrib.gis.db.backends.util
django.db.backends.util
django.forms.util
ModelAdmin.get_formsets
sera supprimé.
Le code de rétrocompatibilité permettant le renommage de la méthode BaseMemcachedCache._get_memcache_timeout()
en get_backend_timeout()
sera supprimé.
Les options --natural
et -n
de dumpdata
seront supprimées.
Le paramètre use_natural_keys
de serializers.serialize()
sera supprimé.
L’API privée django.forms.forms.get_declared_fields()
sera supprimée.
La possibilité d’utiliser un composant SplitDateTimeWidget
avec DateTimeField
sera supprimée.
La propriété WSGIRequest.REQUEST
sera supprimée.
La classe django.utils.datastructures.MergeDict
sera supprimée.
Les codes de langues zh-cn
et zh-tw
seront supprimés et remplacés respectivement par les codes de langues zh-hans
et zh-hant
.
La fonction interne django.utils.functional.memoize
sera supprimée.
django.core.cache.get_cache
sera supprimée. Ajoutez plutôt les lignes adéquates dans CACHES
et utilisez django.core.cache.caches
.
django.db.models.loading
sera supprimée.
La transmission de paramètres exécutables aux jeux de requête ne sera plus possible.
BaseCommand.requires_model_validation
sera supprimé en faveur de requires_system_checks
.
Les attributs ModelAdmin.validator_class
et default_validator_class
seront supprimés.
ModelAdmin.validate()
sera supprimée.
django.db.backends.DatabaseValidation.validate_field
sera supprimée en faveur de la méthode check_field
.
La commande d’administration validate
sera supprimée.
django.utils.module_loading.import_by_path
sera supprimé en faveur de django.utils.module_loading.import_string
.
Les balises de gabarit ssi
et url
seront supprimées de la bibliothèque de balises de gabarit future
(utilisées durant la période d’obsolescence 1.3/1.4).
django.utils.text.javascript_quote
sera supprimé.
Les réglages de test de base de données comme entrées indépendantes dans les réglages de base de données, préfixés par TEST_
ne seront plus pris en charge.
L’option cache_choices
de ModelChoiceField
et ModelMultipleChoiceField
sera supprimée.
La valeur par défaut de l’attribut RedirectView.permanent
sera modifié de True
à False
.
django.contrib.sitemaps.FlatPageSitemap
sera supprimée en faveur de django.contrib.flatpages.sitemaps.FlatPageSitemap
.
L’API privée django.test.utils.TestTemplateLoader
sera supprimée.
Le module django.contrib.contenttypes.generic
sera supprimé.
Les API privées django.db.models.sql.where.WhereNode.make_atom()
et django.db.models.sql.where.Constraint
seront supprimées.
Consultez les notes de publication de Django 1.6 pour plus de détails sur ces changements.
django.contrib.comments
sera supprimé.
Les API de gestion des transactions suivantes seront supprimées :
TransactionMiddleware
,
les décorateurs et gestionnaires de contexte autocommit
, commit_on_success
et commit_manually
, définis dans django.db.transaction
,
les fonctions commit_unless_managed
et rollback_unless_managed
, aussi définies dans django.db.transaction
,
le réglage TRANSACTIONS_MANAGED
.
Les balises de gabarit cycle
et firstof
vont automatiquement échapper leurs paramètres. Dans 1.6 et 1.7, ce comportement est offert par les versions de ces balises dans la bibliothèque de balises de gabarit future
.
Le réglage SEND_BROKEN_LINK_EMAILS
sera supprimé. Ajoutez plutôt l’intergiciel django.middleware.common.BrokenLinkEmailsMiddleware
à votre réglage MIDDLEWARE_CLASSES
.
django.middleware.doc.XViewMiddleware
sera supprimé. Utilisez django.contrib.admindocs.middleware.XViewMiddleware
à la place.
Model._meta.module_name
a été renommé en model_name
.
Suppression du code de rétrocompatibilité introduit pour renommer get_query_set
et les méthodes similaires de jeux de requêtes. Cela affecte les classes suivantes : BaseModelAdmin
, ChangeList
, BaseCommentNode
, GenericForeignKey
, Manager
, SingleRelatedObjectDescriptor
et ReverseSingleRelatedObjectDescriptor
.
Suppression du code de rétrocompatibilité introduit pour renommer les attributs ChangeList.root_query_set
et ChangeList.query_set
.
django.views.defaults.shortcut
sera supprimée, dans le cadre de l’objectif de supprimer toutes les références à django.contrib
dans le code du cœur de Django. Utilisez django.contrib.contenttypes.views.shortcut
à la place. django.conf.urls.shortcut
sera aussi supprimée.
Le module Python Imaging Library (PIL) ne sera plus pris en charge, car il ne semble plus activement maintenu et qu’il ne fonctionne pas avec Python 3.
Les API privées suivantes seront supprimées :
django.db.backend
django.db.close_connection()
django.db.backends.creation.BaseDatabaseCreation.set_autocommit()
django.db.transaction.is_managed()
django.db.transaction.managed()
django.forms.widgets.RadioInput
sera supprimé en faveur de django.forms.widgets.RadioChoiceInput
.
Le module django.test.simple
et la classe django.test.simple.DjangoTestSuiteRunner
seront supprimés. Utilisez django.test.runner.DiscoverRunner
à la place.
Le module django.test._doctest
sera supprimé. Utilisez à la place le module doctest de la bibliothèque Python standard.
Le réglage CACHE_MIDDLEWARE_ANONYMOUS_ONLY
sera supprimé.
L’utilisation de la chaîne codée en dur Maintenir «Contrôle» ou «Commande» sur Mac pour sélectionner plusieurs pour remplacer ou ajouter au contenu help_text
des formulaires pour les champs de modèle ManyToMany ne sera plus appliquée par Django, ni pour les modèles, ni pour les formulaires.
Les méthodes Model._meta.get_(add|change|delete)_permission
seront supprimées.
La clé de session django_language
ne sera plus lue comme elle l’était par rétrocompatibilité.
Les plans de site géographiques seront supprimés (django.contrib.gis.sitemaps.views.index
et django.contrib.gis.sitemaps.views.sitemap
).
django.utils.html.fix_ampersands
, le filtre de gabarit fix_ampersands
et django.utils.html.clean_html
seront supprimés selon une obsolescence accélérée.
Consultez les notes de publication de Django 1.5 pour plus de détails sur ces changements.
Le module django.utils.simplejson
sera supprimé. La bibliothèque standard fournit json
qui doit être utilisé à la place.
La fonction django.utils.itercompat.product
sera supprimée. La version intégrée à Python doit être utilisée à la place.
La correction automatique des réglages INSTALLED_APPS et TEMPLATE_DIRS lorsqu’ils contiennent des chaînes au lieu de tuples sera supprimée et produira une exception.
L’argument mimetype
des méthodes __init__
de class:~django.http.HttpResponse, SimpleTemplateResponse
et TemplateResponse
sera supprimé. Il faut utiliser content_type
à la place. Cela s’applique aussi au raccourci render_to_response()
et aux vues des plans de sites, index()
et sitemap()
.
Lorsque HttpResponse
est instanciée avec un itérateur ou lorsque content
est défini à un itérateur, ce dernier sera immédiatement consommé.
Le réglage AUTH_PROFILE_MODULE
ainsi que la méthode get_profile()
du modèle User
seront supprimés.
La commande d’administration cleanup
sera supprimée. Elle est remplacée par clearsessions
.
Le script daily_cleanup.py
sera supprimé.
Le paramètre nommé depth
sera supprimé de select_related()
.
Les fonctions non documentées get_warnings_state()
/restore_warnings_state()
de django.test.utils
et les méthodes django.test.*TestCase save_warnings_state()
/ restore_warnings_state()
sont obsolètes. Utilisez plutôt le gestionnaire de contexte warnings.catch_warnings
disponible à partir de Python 2.6.
La méthode non documentée check_for_test_cookie
dans AuthenticationForm
sera supprimée à la suite d’une obsolescence accélérée. Les personnes héritant de ce formulaire doivent supprimer les appels à cette méthode et s’assurer à la place que leurs vues liées à l’authentification soient protégées par CSRF, ce qui garantit que les cookies sont activés.
La version de django.contrib.auth.views.password_reset_confirm()
qui prend en charge les identifiants d’utilisateur codés en base36 (django.contrib.auth.views.password_reset_confirm_uidb36`) sera supprimée. Si votre site a fonctionné sous Django 1.6 pendant plus de PASSWORD_RESET_TIMEOUT_DAYS
jours, ce changement n’aura aucun effet. Sinon, tout lien de réinitialisation de mot de passe généré avant de mettre à jour à Django 1.7 ne fonctionnera plus après la mise à jour.
La classe mixin django.utils.encoding.StrAndUnicode
sera supprimée.
Consultez les notes de publication de Django 1.4 pour plus de détails sur ces changements.
django.contrib.databrowse
sera supprimée.
django.contrib.localflavor
sera supprimée suite à une obsolescence accélérée.
django.contrib.markup
sera supprimée suite à une obsolescence accélérée.
Les modules de compatibilité django.utils.copycompat
et django.utils.hashcompat
de même que les fonctions django.utils.itercompat.all
et django.utils.itercompat.any
seront supprimées. Les versions intégrées à Python doivent être utilisées à la place.
Les décorateurs csrf_response_exempt
et csrf_view_exempt
seront supprimés. Depuis la version 1.4, csrf_response_exempt
était sans effet (elle renvoie la même fonction) et csrf_view_exempt
était un synonyme de django.views.decorators.csrf.csrf_exempt
, qui doit être utilisée pour la remplacer.
Le moteur django.core.cache.backends.memcached.CacheClass
a été séparé en deux dans Django 1.3 afin d’ajouter la prise en charge de PyLibMC. La classe historique CacheClass
sera supprimée en faveur de django.core.cache.backends.memcached.MemcachedCache
.
Les objets avec préfixe UK de django.contrib.localflavor.uk
ne seront plus disponibles que sous leur nom préfixé avec GB (GB est le code ISO 3166 correct pour le Royaume-Uni).
Les réglages IGNORABLE_404_STARTS
et IGNORABLE_404_ENDS
ont été remplacés par IGNORABLE_404_URLS
dans la version 1.4. Ils seront supprimés.
L’assistant de formulaire a été retravaillé pour utiliser les vues basées sur les classes avec des moteurs interchangeables dans 1.4. L’implémentation précédente sera supprimée.
Les anciennes manières d’appeler cache_page()
seront supprimées.
Le code de rétrocompatibilité pour automatiquement ajouter un filtre debug à faux dans le gestionnaire de journalisation 'mail_admins'
sera supprimé. Le réglage LOGGING
devrait inclure ce filtre explicitement s’il est souhaité.
Les fonctions de troncature intégrées django.utils.text.truncate_words()
et django.utils.text.truncate_html_words()
seront supprimées en faveur de la nouvelle classe django.utils.text.Truncator
.
La classe django.contrib.gis.geoip.GeoIP
a été déplacée dans django.contrib.gis.geoip
dans la version 1.4 – le raccourci dans django.contrib.gis.utils
sera supprimé.
django.conf.urls.defaults
sera supprimée. Les fonctions include()
, patterns()
et url()
, ainsi que handler404
et handler500
sont dorénavant disponibles par django.conf.urls
.
Les fonctions setup_environ()
et execute_manager()
seront supprimées de django.core.management
. Cela signifie aussi que l’ancien (pré-1.4) style de fichier manage.py
ne fonctionnera plus.
La définition des drapeaux is_safe
et needs_autoescape
en tant qu’attributs des fonctions de filtres de gabarits ne sera plus prise en charge.
L’attribut HttpRequest.raw_post_data
a été renommé en HttpRequest.body
dans 1.4. La rétrocompatibilité sera supprimée – HttpRequest.raw_post_data
ne sera plus disponible.
La valeur du paramètre post_url_continue
dans ModelAdmin.response_add()
devra soit valoir None
(pour rediriger vers la page d’édition de l’objet nouvellement créé) soit contenir une URL préformatée. Les substitutions de chaînes, telles que la valeur par défaut précédente '../%s/'
, ne seront plus acceptées.
Consultez les notes de publication de Django 1.3 pour plus de détails sur ces changements.
Le lancement de Django sans SECRET_KEY
produira une exception au lieu d’un avertissement DeprecationWarning
(le procédé d’obsolescence a été accéléré, voir les notes de publication de Django 1.4).
Le gestionnaire de requête mod_python
sera supprimé. Le gestionnaire mod_wsgi
devrait être utilisé à la place.
L’attribut template
des objets django.test.client.Response
renvoyés par le client de test sera supprimé. L’attribut templates
devrait être utilisé à la place.
django.test.simple.DjangoTestRunner
sera supprimé. Utilisez à la place une classe intégrée de unittest
. Les fonctionnalités de django.test.simple.DjangoTestRunner
(y compris l’échec rapide et l’interruption des tests par Ctrl-C) sont aussi disponibles dans unittest.TextTestRunner
.
La fonction non documentée django.contrib.formtools.utils.security_hash
sera supprimée. Utilisez django.contrib.formtools.utils.form_hmac
à la place.
Les modules de vues génériques basées sur les fonctions seront supprimés en faveur de leurs équivalents basés sur des classes, comme expliqué ici.
django.core.servers.basehttp.AdminMediaHandler
sera supprimé. Utilisez django.contrib.staticfiles.handlers.StaticFilesHandler
à sa place.
La bibliothèque de balises de gabarits adminmedia
et la balise de gabarit {% admin_media_prefix %}
seront supprimés en faveur de la gestion générique des fichiers statiques (suppression accélérée par rapport au processus d’obsolescence habituel, voir les notes de publication de Django 1.4).
Les balises de gabarit url
et ssi
seront modifiées pour que le premier argument de chaque balise soit une variable de gabarit et non automatiquement une chaîne. Dans 1.4, ce comportement est fourni par une version de la balise dans la bibliothèque de balises de gabarits future
.
Les commandes d’administration reset
et sqlreset
seront supprimées.
Les moteurs d’authentification devront prendre en charge un utilisateur inactif transmis à toutes les méthodes s’occupant de permissions. L’attribut supports_inactive_user
ne sera plus pris en compte et peut être supprimé de tout moteur personnalisé.
transform()
générera une exception GEOSException
lorsqu’on lui transmet une géométrie sans valeur de SRID.
django.http.CompatCookie
sera supprimée en faveur de django.http.SimpleCookie
.
django.core.context_processors.PermWrapper
et django.core.context_processors.PermLookupDict
seront supprimés en faveur de respectivement django.contrib.auth.context_processors.PermWrapper
et django.contrib.auth.context_processors.PermLookupDict
.
Les réglages MEDIA_URL
et STATIC_URL
devront obligatoirement se terminer par une barre oblique pour s’assurer que la manière de combiner les chemins dans les gabarits soit harmonisée.
django.db.models.fields.URLField.verify_exists
sera supprimée. La fonctionnalité a été rendue obsolète dans 1.3.1 en raison de problèmes de sécurité et de performance insurmontables, et son obsolescence a donc été accélérée.
Les traductions situées au niveau du chemin du projet sont ignorées durant le processus de construction des traductions au moment de l’exécution. Le réglage LOCALE_PATHS
peut être utilisé pour la même tâche en incluant comme valeur le chemin sur le système de fichiers vers un répertoire locale
contenant des traductions non liées à une application précise.
L’application contribuée Markup ne prendra plus en charge les versions de la bibliothèque Python-Markdown plus anciennes que la 2.1. Une obsolescence accélérée a été choisie car il s’agissait d’une obsolescence liée à la sécurité.
Le réglage CACHE_BACKEND
sera supprimé. Les moteurs de cache doivent être indiqués dans le réglage CACHES
.
Consultez les notes de publication de Django 1.2 pour plus de détails sur ces changements.
CsrfResponseMiddleware
et CsrfMiddleware
seront supprimés. Utilisez la balise de gabarit {% csrf_token %}
dans les formulaires pour activer la protection CSRF. CsrfViewMiddleware
est conservée et activée par défaut.
Les anciennes importations de fonctionnalité CSRF (django.contrib.csrf.*
), qui sont passées dans le cœur Django dans la version 1.2 seront supprimées.
Le module django.contrib.gis.db.backend
sera supprimé en faveur des moteurs spécifiques.
SMTPConnection
sera supprimée en faveur d’une API générique de moteur de courriels.
Les fonctions de génération SQL plusieurs-à-plusieurs des moteurs de base de données seront supprimées.
La possibilité d’utiliser la famille de réglages de premier niveau DATABASE_*
pour définir les connexions de base de données sera supprimée.
La possibilité d’utiliser une notation raccourcie pour pointer vers un moteur de base de données (par ex. sqlite3
au lieu de django.db.backends.sqlite3
) sera supprimée.
Les méthodes get_db_prep_save
, get_db_prep_value
et get_db_prep_lookup
devront prendre en charge les bases de données multiples.
Le modèle Message
(dans django.contrib.auth
), son gestionnaire d’objets liés dans le modèle User
(user.message_set
) et ses méthodes associées (user.message_set.create()
et user.get_and_delete_messages()
) seront supprimées. Il est recommandé d’utiliser l’infrastructure des messages à la place. La variable liée messages
renvoyée par le processeur de contexte auth
sera également supprimée. Notez que cela signifie que l’application admin va dépendre du processeur de contexte des messages.
Les moteurs d’authentification devront prendre en charge le paramètre obj
pour le contrôle des permissions. L’attribut supports_object_permissions
ne sera plus pris en compte et peut être supprimé de tout moteur personnalisé.
Les moteurs d’authentification devront prendre en charge la classe AnonymousUser
transmise à toutes les méthodes s’occupant de permissions. La variable supports_anonymous_user
ne sera plus prise en compte et peut être supprimée de tout moteur personnalisé.
La possibilité d’indiquer une chargeur de gabarit sous forme d’exécutable plutôt que d’une classe Loader
sera supprimée, tout comme les fonctions load_template_source
qui sont incluses avec les chargeurs de gabarits intégrés par rétrocompatibilité.
django.utils.translation.get_date_formats()
et django.utils.translation.get_partial_date_formats()
. Ces fonctions seront supprimées ; utilisez django.utils.formats.get_format()` qui est sensible à la locale active pour obtenir les bons formats.
Dans django.forms.fields
, les constantes DEFAULT_DATE_INPUT_FORMATS
, DEFAULT_TIME_INPUT_FORMATS
et DEFAULT_DATETIME_INPUT_FORMATS
seront supprimées. Utilisez django.utils.formats.get_format()
pour obtenir les formats appropriés.
La possibilité d’utiliser un lanceur de tests basé sur une fonction sera supprimée, de même que le lanceur de tests django.test.simple.run_tests()
.
La vue views.feed()
et la classe feeds.Feed
dans django.contrib.syndication
seront supprimées. La vue basée sur une classe views.Feed
doit être utilisée à la place.
django.core.context_processors.auth
. Cette publication va supprimer l’ancienne méthode en faveur de la nouvelle méthode dans django.contrib.auth.context_processors.auth
.
Le moteur de base de données postgresql
sera supprimé, utilisez à la place le moteur postgresql_psycopg2
.
Le code de langue no
sera supprimé car il a été remplacé par le code de langue nb
.
Les moteurs d’authentification devront définir l’attribut booléen supports_inactive_user
jusqu’à la version 1.5 qui considérera comme acquis le fait que tous les moteurs savent gérer les utilisateurs inactifs.
django.db.models.fields.XMLField
sera supprimée. Elle a été rendue obsolète dans la version 1.3. Une obsolescence accélérée a été choisie car ce champ n’avait déjà plus aucune fonction supplémentaire qu’un simple TextField
depuis la suppression de oldforms
. Toutes les occurrences de XMLField
peuvent être remplacées par le type de champ TextField
.
Le paramètre non documenté mixin
de la méthode open()
de django.core.files.storage.Storage
(et ses sous-classes) sera supprimé.
Consultez les notes de publication de Django 1.1 pour plus de détails sur ces changements.
AdminSite.root()
. Cette méthode de branchement des URL d’administration sera supprimée en faveur de l’inclusion de admin.site.urls
.
Les moteurs d’authentification doivent définir les attributs booléens supports_object_permissions
et supports_anonymous_user
jusqu’à la version 1.4, après quoi Django supposera que tous les moteurs savent gérer ces options.
avr. 05, 2025