我对多对多关系上的一个直通表的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'
序列化程序.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)
url.py
path('Equipos_Atributos/<int:pk>/<int:pk2>/',views.Equipo_Atributo_Detail.as_view()),
现在,PUT请求问题:
当我试图通过PUT请求修改单个记录时,让我们假设记录“1-2” 当它试图插入新记录而不是更新现有记录时,将抛出错误“键“PRIMARY”的重复条目“1-2”
当我试图删除一条记录时,假设记录为“1-2”,它实际上会删除带有1的所有组合
ej: 1,2
1,3
1,6
目前没有回答
相关问题 更多 >
编程相关推荐