Встречается на собеседованиях • сегодня
Как обработать Many-to-Many поля в сериалайзерах Django REST Framework
Для обработки Many-to-Many полей в DRF сериализаторах можно использовать PrimaryKeyRelatedField, SlugRelatedField или вложенные сериализаторы. Вот основные подходы:
- PrimaryKeyRelatedField (простой вариант):
python
class BookSerializer(serializers.ModelSerializer):
authors = serializers.PrimaryKeyRelatedField(
many=True,
queryset=Author.objects.all()
)
class Meta:
model = Book
fields = ['id', 'title', 'authors']- SlugRelatedField (если нужно отображать по другому полю):
python
class BookSerializer(serializers.ModelSerializer):
authors = serializers.SlugRelatedField(
many=True,
slug_field='name',
queryset=Author.objects.all()
)- Вложенный сериализатор (для сложных случаев):
python
class AuthorSerializer(serializers.ModelSerializer):
class Meta:
model = Author
fields = ['id', 'name']
class BookSerializer(serializers.ModelSerializer):
authors = AuthorSerializer(many=True)
class Meta:
model = Book
fields = ['id', 'title', 'authors']Для создания/обновления объектов с M2M полями нужно переопределить методы create() и update() в сериализаторе, чтобы правильно обработать связь.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы