Mark initial_data as deprecated separately from syncdb. Refs #23077.

This commit is contained in:
Andrew Godwin 2014-07-25 09:09:15 -07:00
parent ed4812692e
commit f44dbf74a4
3 changed files with 13 additions and 4 deletions

View File

@ -17,6 +17,7 @@ from django.utils import lru_cache
from django.utils.encoding import force_text from django.utils.encoding import force_text
from django.utils.functional import cached_property from django.utils.functional import cached_property
from django.utils._os import upath from django.utils._os import upath
from django.utils.deprecation import RemovedInDjango19Warning
from itertools import product from itertools import product
try: try:
@ -219,6 +220,11 @@ class Command(BaseCommand):
if fixture_name != 'initial_data' and not fixture_files: if fixture_name != 'initial_data' and not fixture_files:
# Warning kept for backwards-compatibility; why not an exception? # Warning kept for backwards-compatibility; why not an exception?
warnings.warn("No fixture named '%s' found." % fixture_name) warnings.warn("No fixture named '%s' found." % fixture_name)
elif fixture_name == 'initial_data':
warnings.warn(
'initial_data fixtures are deprecated. Use data migrations instead.',
RemovedInDjango19Warning
)
return fixture_files return fixture_files

View File

@ -28,10 +28,6 @@ about each item can often be found in the release notes of two versions prior.
* The ``DatabaseCreation`` class on each database backend will be removed, * The ``DatabaseCreation`` class on each database backend will be removed,
and all table/schema editing will be moved to be via ``SchemaEditor`` instead. and all table/schema editing will be moved to be via ``SchemaEditor`` instead.
* The legacy method of syncing apps without migrations will be removed,
and migrations will become compulsory for all apps. This includes automatic
loading of fixtures and support for initial SQL data.
* The ability to :func:`~django.core.urlresolvers.reverse` URLs using a dotted * The ability to :func:`~django.core.urlresolvers.reverse` URLs using a dotted
Python path will be removed. Python path will be removed.
@ -68,6 +64,10 @@ details on these changes.
* ``allow_syncdb`` on database routers will no longer automatically become * ``allow_syncdb`` on database routers will no longer automatically become
``allow_migrate``. ``allow_migrate``.
* The legacy method of syncing apps without migrations will be removed,
and migrations will become compulsory for all apps. This includes automatic
loading of ``initial_data`` fixtures and support for initial SQL data.
* All models will need to be defined inside an installed application or * All models will need to be defined inside an installed application or
declare an explicit :attr:`~django.db.models.Options.app_label`. declare an explicit :attr:`~django.db.models.Options.app_label`.
Furthermore, it won't be possible to import them before their application Furthermore, it won't be possible to import them before their application

View File

@ -961,6 +961,9 @@ Instead, you are encouraged to load initial data in migrations if you need it
this has the added advantage that your initial data will not need updating this has the added advantage that your initial data will not need updating
every time you change the schema. every time you change the schema.
Additionally, like the rest of Django's old ``syncdb`` code, ``initial_data``
has been started down the deprecation path and will be removed in Django 1.9.
deconstruct() and serializability deconstruct() and serializability
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~