def handle(slice): from core.models import SiteDeployments,SliceDeployments,Deployment from collections import defaultdict site_deployments = SiteDeployments.objects.all() site_deploy_lookup = defaultdict(list) for site_deployment in site_deployments: site_deploy_lookup[site_deployment.site].append(site_deployment.deployment) slice_deployments = SliceDeployments.objects.all() slice_deploy_lookup = defaultdict(list) for slice_deployment in slice_deployments: slice_deploy_lookup[slice_deployment.slice].append(slice_deployment.deployment) all_deployments = Deployment.objects.all() # slices are added to all deployments for now expected_deployments = all_deployments #expected_deployments = site_deploy_lookup[slice.site] for expected_deployment in expected_deployments: if slice not in slice_deploy_lookup or \ expected_deployment not in slice_deploy_lookup[slice]: sd = SliceDeployments(slice=slice, deployment=expected_deployment) sd.save()