ManytoMany关系序列化器

时间:2017-08-07 04:35:00

标签: python django postgresql

我遇到了一个单一的多对多关系的巨大问题,我试图将用户的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}]
 }

1 个答案:

答案 0 :(得分:0)

尝试这样的事情,

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