PUT / GET / DELETE Запросы на многие для многих отношений - PullRequest
0 голосов
/ 30 сентября 2019

У меня проблемы с запросами PUT / GET / DELTE для сквозной таблицы в отношениях «многие ко многим», эти модели связаны с проверкой существующей базы данных MySQL

models.py

class Equipo(models.Model):
    idequipo = models.AutoField(db_column='idEquipo', primary_key=True)  
    marca = models.CharField(db_column='Marca', max_length=100, blank=True, null=True) 
    modelo = models.CharField(db_column='Modelo', max_length=100, blank=True, null=True) 
    class Meta:
        managed = False
        db_table = 'equipo'

class EquipoHasAtributo(models.Model):
    equipo_idequipo = models.ForeignKey(Equipo, models.DO_NOTHING, db_column='Equipo_idEquipo', primary_key=True)  
    atributo_idatributo = models.ForeignKey(Atributo, models.DO_NOTHING, db_column='Atributo_idAtributo')  
    descripcion = models.CharField(db_column='Descripcion', max_length=100, blank=True, null=True)  

    class Meta:
        managed = False
        db_table = 'equipo_has_atributo'
        unique_together = (('equipo_idequipo', 'atributo_idatributo'),)

class Atributo(models.Model):
    idatributo = models.AutoField(db_column='idAtributo', primary_key=True)
    nombre = models.CharField(db_column='Nombre', max_length=45, blank=True, null=True)  
    estado = models.IntegerField(db_column='Estado') 

    class Meta:
        managed = False
        db_table = 'atributo'

serializer.py

class EquipoHasAtributoSerializer(serializers.ModelSerializer):
    equipo_idequipo=serializers.PrimaryKeyRelatedField(many=False, read_only=False, queryset=Equipo.objects.all())
    class Meta:
        model=EquipoHasAtributo
        fields=['equipo_idequipo','atributo_idatributo','descripcion']

это моё "решение" для запроса GET для отдельной записи, в противном случае будет выдано сообщение об ошибке "несколько записей" или "список неперехватываемого списка"

views.py

class Equipo_Atributo_Detail(generics.RetrieveUpdateDestroyAPIView):
    queryset=EquipoHasAtributo.objects.all()
    serializer_class=EquipoHasAtributoSerializer
    lookup_url_kwarg=['pk,pk2']
    def get_object(self):
        pk=self.kwargs['pk']
        pk2=self.kwargs['pk2']
        return EquipoHasAtributo.objects.get(equipo_idequipo=pk,atributo_idatributo=pk2)

urls.py

path('Equipos_Atributos/<int:pk>/<int:pk2>/',views.Equipo_Atributo_Detail.as_view()),

СЕЙЧАС проблема запроса PUT:

, когда я пытаюсь изменить одну запись по запросу PUT, скажем, запись «1-2» выдаст ошибку «Дублирующая запись« 1-2 »для ключа« PRIMARY »», так как он попытался вставить новую запись вместо обновления существующей

КогдаЯ пытаюсь удалить одну запись, скажем, запись "1-2" будет фактически стереть все комбинации с 1

ej: 1,2

1,3

1,6

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...