소스 검색

Fixed #25063 -- Added path to makemigration's output of migration file.

Niels Van Och 9 년 전
부모
커밋
99a1265a39

+ 6 - 1
django/core/management/commands/makemigrations.py

@@ -172,7 +172,12 @@ class Command(BaseCommand):
                 # Describe the migration
                 writer = MigrationWriter(migration)
                 if self.verbosity >= 1:
-                    self.stdout.write("  %s:\n" % (self.style.MIGRATE_LABEL(writer.filename),))
+                    # Display a relative path if it's below the current working
+                    # directory, or an absolute path otherwise.
+                    migration_string = os.path.relpath(writer.path)
+                    if migration_string.startswith('..'):
+                        migration_string = writer.path
+                    self.stdout.write("  %s:\n" % (self.style.MIGRATE_LABEL(migration_string),))
                     for operation in migration.operations:
                         self.stdout.write("    - %s\n" % operation.describe())
                 if not self.dry_run:

+ 1 - 1
docs/intro/tutorial02.txt

@@ -227,7 +227,7 @@ You should see something similar to the following:
 .. code-block:: text
 
     Migrations for 'polls':
-      0001_initial.py:
+      polls/migrations/0001_initial.py:
         - Create model Choice
         - Create model Question
         - Add field question to choice

+ 1 - 1
docs/ref/contrib/gis/tutorial.txt

@@ -239,7 +239,7 @@ create a database migration:
 
     $ python manage.py makemigrations
     Migrations for 'world':
-      0001_initial.py:
+      world/migrations/0001_initial.py:
         - Create model WorldBorder
 
 Let's look at the SQL that will generate the table for the ``WorldBorder``

+ 3 - 0
docs/releases/1.10.txt

@@ -199,6 +199,9 @@ Management Commands
   command exit with a non-zero status when model changes without migrations are
   detected.
 
+* :djadmin:`makemigrations` now displays the path to the migration files that
+  it generates.
+
 Migrations
 ^^^^^^^^^^
 

+ 1 - 1
docs/topics/migrations.txt

@@ -115,7 +115,7 @@ a field and remove a model - and then run :djadmin:`makemigrations`::
 
     $ python manage.py makemigrations
     Migrations for 'books':
-      0003_auto.py:
+      books/migrations/0003_auto.py:
         - Alter field author on book
 
 Your models will be scanned and compared to the versions currently

+ 12 - 0
tests/migrations/test_commands.py

@@ -1009,6 +1009,18 @@ class MakeMigrationsTests(MigrationTestBase):
         with self.temporary_migration_module(module="migrations.test_migrations_no_changes"):
             call_command("makemigrations", "--check", "migrations", verbosity=0)
 
+    def test_makemigrations_migration_path_output(self):
+        """
+        makemigrations should print the relative paths to the migrations unless
+        they are outside of the current tree, in which case the absolute path
+        should be shown.
+        """
+        out = six.StringIO()
+        apps.register_model('migrations', UnicodeModel)
+        with self.temporary_migration_module() as migration_dir:
+            call_command("makemigrations", "migrations", stdout=out)
+            self.assertIn(os.path.join(migration_dir, '0001_initial.py'), out.getvalue())
+
 
 class SquashMigrationsTests(MigrationTestBase):
     """