Django Проблема с экземпляром обновления Rest API - PullRequest
0 голосов
/ 09 июля 2020

Я новичок в работе с Django Rest API, поэтому у меня проблема с обновлением. Когда я сохраняю экземпляр, я просто вызываю метод save экземпляра сериализатора. Но когда я обновляю экземпляр сериализатора по его идентификатору, я должен предоставить экземпляр для обновления метода. Сейчас у меня другой вопрос. Из-за Django rest API docs

class UpdateModelMixin:
"""
Update a model instance.
"""
def update(self, request, *args, **kwargs):
    partial = kwargs.pop('partial', False)
    instance = self.get_object()
    serializer = self.get_serializer(instance, data=request.data, partial=partial)
    serializer.is_valid(raise_exception=True)
    self.perform_update(serializer)

    if getattr(instance, '_prefetched_objects_cache', None):
        # If 'prefetch_related' has been applied to a queryset, we need to
        # forcibly invalidate the prefetch cache on the instance.
        instance._prefetched_objects_cache = {}

    return Response(serializer.data)

def perform_update(self, serializer):
    serializer.save()

def partial_update(self, request, *args, **kwargs):
    kwargs['partial'] = True
    return self.update(request, *args, **kwargs)

Всегда ли он получает экземпляр из БД (например, этот запрос SELECT *FROM Table1 WHERE id=1) при обновлении экземпляра? И он копирует все поля одно за другим из-за этого docs . Если это работает, выполняет ли он два запроса при обновлении экземпляра? И еще одна проблема в том, что если у моделей есть вложенные поля.

Подскажите, пожалуйста, еще один вариант решения этой проблемы. Я считаю, что один из способов решить эту проблему - использовать обычные SQL запросы, но мне это не нравится.

...