Встречается на собеседованиях • сегодня

Как обработать Many-to-Many поля в сериалайзерах Django REST Framework

Для обработки Many-to-Many полей в DRF сериализаторах можно использовать PrimaryKeyRelatedField, SlugRelatedField или вложенные сериализаторы. Вот основные подходы:

  1. PrimaryKeyRelatedField (простой вариант):
python
class BookSerializer(serializers.ModelSerializer):
    authors = serializers.PrimaryKeyRelatedField(
        many=True, 
        queryset=Author.objects.all()
    )
    
    class Meta:
        model = Book
        fields = ['id', 'title', 'authors']
  1. SlugRelatedField (если нужно отображать по другому полю):
python
class BookSerializer(serializers.ModelSerializer):
    authors = serializers.SlugRelatedField(
        many=True,
        slug_field='name',
        queryset=Author.objects.all()
    )
  1. Вложенный сериализатор (для сложных случаев):
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() в сериализаторе, чтобы правильно обработать связь.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы