Вложенный сериализатор 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 для этих полей