Создать объект со связью один ко многим через API

Я создаю объект таблицы TypesSafetyBreaches который имеет связь ForeignKey с таблицей ListOfSafetyBreachesNames. Если ни в первой, ни во второй таблице нету записываемого значения, тогда с помощью метода create я создаю оба объекта и связываю их. Но если таблица ListOfSafetyBreachesNames уже имеет значение name_safety_breaches, я бы хотел создать объект таблицы TypesSafetyBreaches и связать его с уже существующим. Метод же описанный ниже в данном случае вызовет Bad Request: /api/private_safety_breaches/ Я пробовал использовать метод get_or_create, но это почему-то не помогло.

models.py

class TypesSafetyBreaches(models.Model):
    id_types_safety_breaches = models.AutoField(primary_key=True,)
    safety_breaches = models.ForeignKey(ListOfSafetyBreachesNames, on_delete=models.DO_NOTHING, blank=True, null=True, related_name='filial_safety_breaches_ListOfSafetyBreachesNames')
    id_filial = models.ForeignKey('Filial', models.DO_NOTHING, blank=True, null=True, related_name='TypesSafetyBreaches_Filial')
    common = models.BooleanField()
    is_delete = models.BooleanField(default=False)


class ListOfSafetyBreachesNames(models.Model):
    id_name_safety_breaches = models.AutoField(primary_key=True,)
    name_safety_breaches = models.CharField(max_length=256, unique=True)

serialize.py

class TypesSafetyBreachesSerializer(ModelSerializer):
    safety_breaches = ListOfSafetyBreachesNamesSerializer()

    class Meta:
        model = TypesSafetyBreaches
        fields = ['id_types_safety_breaches', 'safety_breaches', 'id_filial', 'common', 'is_delete']

    def create(self, validated_data):
        print('here ------------')
        safety_breaches_data = validated_data.pop('safety_breaches')
        name = ListOfSafetyBreachesNames.objects.get_or_create(**safety_breaches_data)
        obj = TypesSafetyBreaches.objects.create(safety_breaches=name, **validated_data)
        return obj

api_views.py

class PrivateSafetyBreachesViewSet(ModelViewSet):
    serializer_class = TypesSafetyBreachesSerializer
    model = TypesSafetyBreaches
    permission_classes = [IsAuthenticated]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ['safety_breaches__name_safety_breaches', 'is_delete', 'id_filial']

    def get_queryset(self, *args, **kwargs):
        specialist_filial = self.request.user.profile.is_specialist_in_filial

        if specialist_filial:
            id_filial = self.request.user.profile.id_filial.id_filial
            qs = self.model.objects.filter(common=False, id_filial__id_filial=id_filial)
        else:
            qs = None
        return qs

Ответы (0 шт):