|Version 4 (modified by 12 years ago) (diff),|
As Django is still in pre-release mode, we haven't yet committed to maintaining backwards compatibility in any APIs. Although we're keeping such changes to a minimum, Django developers should be acutely aware of these changes.
Of course, once we reach our first official release, we'll be strongly committed to backward compatibility.
This page lists all backwards-incompatible changes to Django so far, and the proposed backwards-incompatible changes.
Changes already made
Moved mod_python handler
As of , using
django.core.handler as a mod_python handler is deprecated. Use
django.core.handlers.modpython instead. We will be removing
django.core.handler for Django's first release.
Changed ordering syntax
As of , syntax used for
order_by (in the database API) and
ordering (in models) has changed.
Example of old ordering syntax:
order_by=[('foo', 'ASC'), ('bar', 'DESC')]
Example of new ordering syntax:
The old syntax is deprecated, and we'll stop supporting it for Django's first release.
As of ,
django/core/meta.py has been converted to a package,
django/core/meta/. If you're using a version of Django from before , make sure to delete
django/core/meta.pyo, if they exist. The existence of those files doesn't pose any known problems, but it's best to clean things up.
Changed edit_inline and edit_inline_type behavior
As of , using
edit_inline_type in your models is deprecated, in favor of a less-redundant approach that uses
Example of old syntax:
Example of new syntax:
We'll stop supporting the old syntax for Django's first release.
Changed admin log to store primary keys as TEXT fields, not INTEGER fields
As of , the
object_id field in
django.models.auth.LogEntry is a
TextField instead of an
IntegerField. We made this change to accomodate non-integer primary keys.
If you're using a Django database installation from before  and you want to use non-integer primary keys on an object you edit in the admin site, you'll need to do an
ALTER TABLE in your database.
BEGIN; ALTER TABLE auth_admin_log RENAME object_id TO object_id_old; ALTER TABLE auth_admin_log ADD COLUMN object_id TEXT; UPDATE auth_admin_log SET object_id = object_id_old; ALTER TABLE auth_admin_log DROP COLUMN object_id_old; COMMIT;
ALTER TABLE auth_admin_log MODIFY object_id TEXT;
Possible upcoming changes
This is the big one. Model syntax 'might' be changed dramatically before Django's first release, but this is still under debate. See #122 for full information and discussion.