Встречается на собеседованиях • сегодня
Как кастомизировать вывод данных в ModelViewSet
Для кастомизации вывода данных в ModelViewSet можно переопределить методы сериализации или использовать разные сериализаторы для разных действий.
- Переопределение
get_serializer_class:
python
class UserViewSet(ModelViewSet):
queryset = User.objects.all()
def get_serializer_class(self):
if self.action == 'list':
return UserListSerializer
return UserDetailSerializer- Кастомизация через
serializer_class:
python
class UserViewSet(ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
serializer = CustomListSerializer(queryset, many=True)
return Response(serializer.data)- Динамические поля через
to_representationв сериализаторе:
python
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = '__all__'
def to_representation(self, instance):
data = super().to_representation(instance)
if self.context['request'].method == 'GET':
data.pop('password')
return data
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы