多对多关系序列化程序



我在单个多对多关系中遇到了一个巨大的问题,我试图将用户的 id 发送到组序列化程序,以便我保存它们并创建组,但是 id 从未被记录下来,并且 grupos 是在创建任何东西的情况下创建的,只是保存了 nombre 并创建了对象。

Models.py

class Usuarios(models.Model):
class Meta:
db_table = "Usuarios"
idUsuario = models.AutoField(primary_key=True)
tipoUsuario = models.BooleanField(blank=False)
nombre = models.CharField(max_length=100,blank=False)
idUser = models.IntegerField(blank=False)
idEscuela = models.ForeignKey(Escuelas, on_delete=models.CASCADE)
class Grupos(models.Model):
class Meta:
db_table = "Grupos"
idGrupo = models.AutoField(primary_key=True)
nombre = models.CharField(max_length=30,blank=False,unique=True)
idUsuario = models.ManyToManyField(Usuarios)
class idUsuarioSerializer(serializers.Serializer):
#idUsuario = serializers.IntegerField(required=True)
class Meta:
model = Usuarios
fields = ('idUsuario',)

class GrupoSerializer(serializers.Serializer):
nombre = serializers.CharField(required=True)
idUsuario = idUsuarioSerializer(many=True)
class Meta:
model = Grupos
fields = ('nombre','idUsuario')
def create(self, validated_data):
idUsuarios_data = validated_data.pop('idUsuario')
grupo = Grupos.objects.create(**validated_data)
for idUsuario_data in idUsuarios_data:
#print(**idUsuario_data)
#Usuarios.objects.create(grupo=grupo,**idUsuario_data)
grupo.idUsuario.add(**idUsuario_data)
grupo.save()
return grupo

但是,这不会在idUsuario字段上节省任何内容,而且如果我像文档一样这样做,它会给我一个错误"组不是有效的关键字",或者即使我使用" idGrupo",它也说同样的话,我已经检查了其他答案看起来是不可能的,已经尝试过添加方法。

我发送以下 json

{
"nombre": "4B",
"idUsuario":[{"id":1},{"id":2}]
}

试试这样的事情,

for idUsuario_data in idUsuarios_data:
grupo.idUsuario.add(idUsuario_data['id'])
grupo.save()

相关内容

最新更新