Stable Release in branch 1.7
1.7.11
Released 24 Nov 2015
(10 years ago)
SoftwareDjango
Version1.7
Status
End of life
Supported
Python versions
Python 2.7 - 3.4
Initial release1.7
02 Sep 2014
(11 years ago)
Latest release1.7.11
24 Nov 2015
(10 years ago)
End of
mainstream support
01 Apr 2015
(Ended 11 years ago)
End of
extended support
01 Dec 2015
(Ended 10 years ago)
Release noteshttps://docs.djangoproject.com/en/1.11/releases/1.7/
Source codehttps://github.com/django/django/tree/1.7.11
Django 1.7 ReleasesView full list

What Is New in Django 1.7

Django 1.7 is a landmark release, introducing a fundamentally new way to manage database schema changes and application configuration. This version is packed with major features that change how you structure and evolve your projects.

Category Key Changes
New Features Schema Migrations, App Loading Refactor, System Checks Framework, Built-in Database Transactions
Improvements Custom Lookups, Prefetch Object Improvements, Query Expression API Enhancements
Backwards Incompatibilities App Loading Changes, Removal of `syncdb`, `post_syncdb` Signal Deprecation
Deprecated Features South Migrations, `syncdb` command, `get_query_set` method

How does the new migrations framework work?

The new built-in migrations framework replaces third-party tools like South. It automatically generates migration files by detecting changes in your models, creating a versioned history of your database schema.

You interact with it using the makemigrations and migrate management commands. This system tracks dependencies between app migrations, ensuring they are applied in the correct order even across different applications.

In practice, this means you can finally version control your database schema changes alongside your code. The framework handles the complexity of applying and unapplying changes, making deployments much more predictable.

What changed with app loading?

Django 1.7 completely refactored how applications are loaded, fixing long-standing issues with model import timing. The new AppConfig class allows for explicit application configuration and ready-time initialization.

You can now create an apps.py file in your app directory with a custom AppConfig class. This lets you configure application-specific settings and run initialization code when Django starts using the ready() method.

This matters because it eliminates circular import problems that plagued previous versions. You can now reliably import models and connect signals from within the ready() method without causing import conflicts.

What is the system check framework?

The system check framework provides a built-in validation system for detecting common problems in your project configuration before they cause runtime errors. It runs checks during startup and before management commands.

You'll see check warnings for issues like missing field parameters, incorrect model meta options, or problems with your migration files. The framework is extensible, allowing you to write custom checks for your specific project requirements.

This catches configuration errors early in the development process rather than at runtime. You can run checks manually with manage.py check to validate your project before deployment.

How are database transactions handled?

Django 1.7 introduces automatic per-request transactions. When ATOMIC_REQUESTS is enabled, each HTTP request is wrapped in a transaction that's automatically committed on success or rolled back on exception.

You can still use manual transaction management with the transaction.atomic decorator and context manager for more granular control. The new behavior provides better data consistency by default for web applications.

This simplifies handling database integrity across multiple operations within a single request. You get atomic request handling without having to manually decorate every view function.

What query improvements were added?

Django 1.7 adds support for custom lookups, allowing you to create custom database query operations. You can now define your own lookup types beyond the built-in exact, contains, and gt operators.

The Prefetch object was enhanced to provide more control over prefetch_related operations. You can now specify custom querysets for prefetching and chain additional operations like filtering on the prefetched data.

These changes make the ORM more extensible for complex query requirements. You can implement database-specific optimizations or custom filtering logic directly as lookup types.

FAQ

Should I use Django's built-in migrations or continue with South?
Use the built-in migrations framework. South is deprecated in Django 1.7 and will not be supported in future versions. The new framework is more integrated and handles dependency tracking between apps.

How do I migrate my existing South migrations to the new framework?
You'll need to commit your South migrations, delete the South migration files, create initial migrations with makemigrations, and fake-apply them using migrate --fake-initial.

What happens to my existing post_syncdb signals?
The post_syncdb signal is deprecated. You should move this logic to either a migration operation using RunPython or to the ready() method of your AppConfig.

Why am I getting app registry not ready errors?
This usually happens when trying to import models at module level instead of inside functions/methods. The new app loading system is stricter about import timing. Move model imports into function scope or use the AppConfig.ready() method.

How do I create a custom AppConfig for my app?
Create an apps.py file with a class that extends AppConfig, then reference it using the dotted path in your INSTALLED_APPS setting instead of just the app name.

Releases In Branch 1.7

VersionRelease date
1.7.1124 Nov 2015
(10 years ago)
1.7.1018 Aug 2015
(10 years ago)
1.7.908 Jul 2015
(11 years ago)
1.7.801 May 2015
(11 years ago)
1.7.718 Mar 2015
(11 years ago)
1.7.609 Mar 2015
(11 years ago)
1.7.525 Feb 2015
(11 years ago)
1.7.427 Jan 2015
(11 years ago)
1.7.313 Jan 2015
(11 years ago)
1.7.203 Jan 2015
(11 years ago)
1.7.122 Oct 2014
(11 years ago)
1.702 Sep 2014
(11 years ago)
1.7c320 Aug 2014
(11 years ago)
1.7c227 Jul 2014
(12 years ago)
1.7c127 Jun 2014
(12 years ago)
1.7b414 May 2014
(12 years ago)
1.7b328 Apr 2014
(12 years ago)
1.7b221 Apr 2014
(12 years ago)
1.7b121 Mar 2014
(12 years ago)
1.7a206 Feb 2014
(12 years ago)
1.7a123 Jan 2014
(12 years ago)