Различные представления объекта в DRF

У меня есть модель:

class Schedule(LogSaveDeleteMixin, models.Model):
    name = models.CharField(max_length=40)
    start_date = models.DateTimeField(null=True, blank=True)

class DeliveryChannel(LogSaveDeleteMixin, models.Model):
    name = models.CharField(unique=True, max_length=40)
    state = models.CharField(choices=DeliveryChannelState.choices, default='draft', max_length=15)
    schedule = models.ForeignKey(Schedule, null=True, on_delete=models.SET_NULL)

И стандартный ModelSerializer:

class DeliveryChannelsSerializer(serializers.ModelSerializer):
    class Meta:
        model = DeliveryChannel
        fields = '__all__'

class ScheduleSerializer(serializers.ModelSerializer):
    class Meta:
        model = Schedule
        fields = '__all__'

Для запросов на чтение (GET) я хочу получать поле расписания как вложенный сериализатор:

{
  "id": 0,
  "name": "string",
  "state": "archived",
  "schedule": {
    "id": 0,
    "name": "string",
    "start_date": "2022-08-12T02:41:32.187Z",
  }
}

Но для записи (POST, PUT) я хочу получить только id расписания:

{
  "id": 0,
  "name": "string",
  "state": "archived",
  "schedule": 0
}

Я хотел бы узнать лучшие практики для этого

Вернуться на верх