Сериализатор, показывающий имя модели

Я хочу сериализовать данные из вложенного набора queryset: У меня есть рабочий код, но вывод сериализатора показывает слишком много данных. Я хочу скрыть это по соображениям безопасности.

Пример вывода: (...) "gallery": "[{"model": "mainapp.imagesforgallery", "pk": 1, "fields": { "user": 1, "image": "uploads/2022/8/6/drw/Adapta-KDE-theme_JOgL4kO.webp", "thumbnail": ""}}]" (...)

это models.py

class ImagesForGallery(models.Model):
    user = models.ForeignKey(UserProfile, null=True, blank=True, on_delete=models.CASCADE)
    image = models.ImageField(upload_to=user_directory_path, blank=True, null=True)
    thumbnail = models.ImageField(upload_to='uploads/', blank=True, null=True)

    def __str__(self):
        return 'User: {} || Image: {}'.format(self.user, self.image)

class Gallery(models.Model):
    project = models.ForeignKey(Projects, null=True, blank=True, on_delete=models.CASCADE)
    project_gallery =  models.ManyToManyField(ImagesForGallery, blank=True, related_name='project_gallery')

    def __str__(self):
        return '{}'.format(self.project)

Это мое мнение

class HomeView(viewsets.ModelViewSet):
    serializer_class = ProjSerializer
    queryset = Proj.objects.all()

    def list(self, request, *args, **kwargs):
        response = super(HomeView, self).list(request, args, kwargs)
        gal = Gallery.objects.all()
        for d in response.data:
            for g in gal:    
                if d['uuid'] == str(g.project.uuid):
                    qs = g.project_gallery.get_queryset()                
                    serialized_obj = serializers.serialize('json', qs)    
                    d['gallery'] = serialized_obj
                      
        return response

Этот код сравнивает модель проекта с моделью фотогалереи. Если uuid правильный, включите эту галерею в проект и отправьте json.

Я не уверен, что код эффективен и безопасен. Вопрос в том, как изменить код так, чтобы он не показывал имя модели.

Вам необходимо использовать ProjSerializer для сериализации вашего набора запросов

if d['uuid'] == str(g.project.uuid):
    qs = g.project_gallery.get_queryset()
    serialized_obj = ProjSerializer(qs, many=True).data
    d['gallery'] = serialized_obj
Вернуться на верх