Сериализатор, показывающий имя модели
Я хочу сериализовать данные из вложенного набора 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