def handle(self, *args, **options): # Get the primary object dump_name = options["dump_name"] pks = options["pk"] dump_settings = settings.CUSTOM_DUMPS[dump_name] (app_label, model_name) = dump_settings["primary"].split(".") include_primary = dump_settings.get("include_primary", False) dump_me = loading.get_model(app_label, model_name) objs = dump_me.objects.filter(pk__in=[int(i) for i in pks]) for obj in objs.all(): # get the dependent objects and add to serialize list for dep in dump_settings["dependents"]: try: thing = Variable("thing.%s" % dep).resolve({"thing": obj}) if hasattr( thing, "all"): # Related managers can't be iterated over thing = thing.all() add_to_serialize_list([thing]) except VariableDoesNotExist: sys.stderr.write("%s not found" % dep) if include_primary or not dump_settings["dependents"]: add_to_serialize_list([obj]) serialize_fully() data = serialize( "json", [o for o in serialize_me if o is not None], indent=4, use_natural_foreign_keys=options.get("natural", False), use_natural_primary_keys=options.get("natural", False), ) data = reorder_json( json.loads(data), dump_settings.get("order", []), ordering_cond=dump_settings.get("order_cond", {}), ) print(json.dumps(data, indent=4))
def handle(self, *args, **options): # Get the primary object dump_name = options['dump_name'] pks = options['pk'] dump_settings = settings.CUSTOM_DUMPS[dump_name] (app_label, model_name) = dump_settings['primary'].split('.') include_primary = dump_settings.get("include_primary", False) dump_me = loading.get_model(app_label, model_name) objs = dump_me.objects.filter(pk__in=[int(i) for i in pks]) for obj in objs.all(): # get the dependent objects and add to serialize list for dep in dump_settings['dependents']: try: thing = Variable("thing.%s" % dep).resolve({'thing': obj}) if hasattr(thing, 'all'): # Related managers can't be iterated over thing = thing.all() add_to_serialize_list([thing]) except VariableDoesNotExist: sys.stderr.write('%s not found' % dep) if include_primary or not dump_settings['dependents']: add_to_serialize_list([obj]) serialize_fully() data = serialize('json', [o for o in serialize_me if o is not None], indent=4, use_natural_foreign_keys=options.get('natural', False), use_natural_primary_keys=options.get('natural', False), ) data = reorder_json( json.loads(data), dump_settings.get('order', []), ordering_cond=dump_settings.get('order_cond', {}) ) print(json.dumps(data, indent=4))