У меня проблемы с запросами 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