Вложенный сериализатор Django "многие ко многим

Привет, у меня есть класс widgets, который может иметь несколько камер и несколько анализов, связанных с ним. Я хочу вернуть камеры и связанные с ними виджеты как объект, потому что если мы удалим камеры, я хочу получить [{camera: null}]

class CameraWidgetSerializer(serializers.ModelSerializer):
    class Meta:
        model = CameraWidget
        fields = ('camera',)

class AnalysisWidgetSerializer(serializers.ModelSerializer):
    class Meta:
        model = AnalysisWidget
        fields = ('analysis',)

class WidgetSerializer(ModelSerializerWithValidation):
    cameras = CameraWidgetSerializer(many=True)
    analyses = AnalysisWidgetSerializer(many=True)

это упрощенные модальные формы

class CameraWidget(models.Model):
    """ Association class used to link between cameras and widget """
    
    camera = models.ForeignKey(
        Camera,
        models.SET_NULL,
        help_text='The camera related to the widget',
        related_name='cameras_widgets',
        blank=False,
        null=True
    )
    widget = models.ForeignKey(
        Widget,
        models.CASCADE,
        help_text='The widget containing the camera',
        related_name='cameras_widgets',
        blank=True,
        null=True
    )

class Widget(models.Model):

    analyses = models.ManyToManyField(Analysis, through='AnalysisWidget')
    cameras = models.ManyToManyField(Camera, through="CameraWidget")

мне удалось сделать это, разделив вход и выход таким образом

cameras_ids = serializers.PrimaryKeyRelatedField(queryset=Camera.objects.all(), many=True, write_only=True)
cameras = serializers.PrimaryKeyRelatedField(queryset=Camera.objects.all(), many=True, write_only=True)

но я хочу, чтобы get и post имели одинаковую структуру, то есть "камеры" в теле обоих запросов сохраняя при этом валидацию DRF для этих полей

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