Насколько я понимаю, тогда как метод Model.values (). Get () преобразует всю вашу модель и все поля атрибутов в dict, с помощью пользовательского сериализатора вы можете указать, какие атрибуты вы хотите включить, а какие нет.
Модель пользователя с .values (). Get ()
x = User.objects.values().get(id=1)
print(x)
#{'id': 1,
#'password': #'fdwfekwjgwlgkkk4j2oi4t243t4=',
#'last_login': datetime.datetime(2020, 4, 23, 17, 19, 28, 709800, tzinfo=<UTC>),
#'is_superuser': True,
#'username': 'weir.b',
#'first_name': 'Bob',
#'last_name': 'Weir',
#'email': 'weir.bob@gd.com',
#'is_staff': True,
#'is_active': True,
#'date_joined': datetime.datetime(2019, 11, 21, 15, 2, 20, 618498, tzinfo=<UTC>),
#'department': 'asdfsdf'}
Сравнение с выходом сериализатора
class UserSerializer(serializers.Serializer):
username = serializers.CharField(max_length=255)
department = serializers.CharField(max_length=100)
s = UserSerializer(x)
print(s.data)
#{'username': 'weir.b', 'department': 'asdfsdf'}
Сериализаторы предназначены для предоставления информации о модели API. клиент, тогда как объекты Model являются истинным представлением данных в базе данных. С помощью сериализатора вы также можете переопределить и добавить пользовательские методы, например validate ().