diff --git a/api/v1/serializers/school.py b/api/v1/serializers/school.py index caceba24..7bb15b00 100644 --- a/api/v1/serializers/school.py +++ b/api/v1/serializers/school.py @@ -76,18 +76,18 @@ class SchoolScheduleSerializer(serializers.ModelSerializer): return schoolschedule def dispatch_gallery(self, schoolschedule, gallery): + images = list(SchoolScheduleImage.objects.filter(schoolschedule=schoolschedule).values_list('img', flat=True)) + new_images = [] for image in gallery: - - imgs = SchoolScheduleImage.objects.filter( - schoolschedule=schoolschedule, - img=image['img'] - ) - - if not imgs.exists(): - si = SchoolScheduleImage.objects.create( - schoolschedule=schoolschedule, - img=image['img'], - ) + if image.get('img'): + if image['img'].id not in images: + SchoolScheduleImage.objects.create( + schoolschedule=schoolschedule, + img=image['img'], + ) + new_images.append(image['img'].id) + SchoolScheduleImage.objects.filter(schoolschedule=schoolschedule, img__isnull=True).delete() + SchoolScheduleImage.objects.filter(schoolschedule=schoolschedule, img__in=set(images) - set(new_images)).delete() def to_representation(self, instance): return SchoolScheduleSerializerImg(instance, context=self.context).to_representation(instance)