diff --git a/django_extensions/management/commands/syncdata.py b/django_extensions/management/commands/syncdata.py index 1f2a3f44b..61a58d58b 100644 --- a/django_extensions/management/commands/syncdata.py +++ b/django_extensions/management/commands/syncdata.py @@ -12,6 +12,7 @@ import sys from contextlib import contextmanager from functools import wraps +from optparse import make_option import six from django.core.management.base import BaseCommand @@ -50,6 +51,12 @@ class Command(BaseCommand): help = 'Makes the current database have the same data as the fixture(s), no more, no less.' args = "fixture [fixture ...]" + option_list = BaseCommand.option_list + ( + make_option('--skip-remove', action='store_false', + dest='remove', default=True, + help='Avoid remove any object from db'), + ) + def remove_objects_not_in(self, objects_to_keep, verbosity): """ Deletes all the objects in the database that are not in objects_to_keep. @@ -167,7 +174,8 @@ def handle(self, *fixture_labels, **options): models.add(class_) obj.save() - self.remove_objects_not_in(objects_to_keep, verbosity) + if options.get('remove'): + self.remove_objects_not_in(objects_to_keep, verbosity) label_found = True except (SystemExit, KeyboardInterrupt):