在表manytomany django中增加价值

时间:2019-01-25 23:47:00

标签: django api many-to-many

嗨,我尝试在django中的许多表中添加相同的值,但我不知道该怎么做

这是我的模型:

class Raza(models.Model):
     Nombre = models.CharField(max_length=50)
     Origen = models.CharField(max_length=45)
     Altura = models.CharField(max_length=10)
     Peso = models.CharField(max_length=10)
     Esperanza_vida = models.CharField(max_length=10)
     Actividad_fisica = models.CharField(max_length=45)
     Recomendaciones = models.CharField(max_length=500)
     Clasificacion_FCI = models.ForeignKey(Clasificacion_FCI,null=True,blank=True,on_delete=models.CASCADE)
     Tipo_pelo = models.ManyToManyField(Tipo_pelo,blank=True)
     Caracteristicas_fisicas = models.ManyToManyField(Caracteristicas_fisicas,blank=True)
     Caracter = models.ManyToManyField(Caracter,blank=True)
     Ideal = models.ManyToManyField(Ideal,blank=True)
     Tamanio = models.ForeignKey(Tamanio,null=True,blank=True,on_delete=models.CASCADE)
     User = models.ManyToManyField(User,blank=True)

和用户模型是Django给我的默认模型

我尝试过这样的人

class AgregarFav(views.APIView):
    def post(self, request, *args, **kwargs):
        idUsario= request.POST.get('isUsuario')
        idPerro = request.POST.get('idPerro')
        raza = Raza.User.add(idPerro,idUsario)
        raza.save()
        return HttpResponse(idUsario)

但是我有错误'ManyToManyDescriptor'对象没有属性'add'

我想做类似的事情

table user 
id_usuario = 1
name = "Juan"

table raza
id_raza = 1 
name = "pitbull"

table user_raza
id_user_raza = 1
id_user = 1
id_raza = 1

3 个答案:

答案 0 :(得分:0)

由于PEP8,因此您不应以大写字母开头来命名模型的字段。

  

使用函数命名规则:小写字母,必要时用下划线分隔单词,以提高可读性。

User重命名为users(因为您的m2m连接意味着双方都有多个实例),应用迁移并将User的实例添加到Raza的实例中,如下所示:

user = User.objects.get(id=usario_id)
Raza.objects.get(id=perro_id).users.add(user)

Django m2m add docs

编辑:

实际上,您可以按实例而不是按pk来添加用户。参见此question

答案 1 :(得分:0)

您编辑特定于 对象的关系,例如:

Raza.objects.get(id=idPerro).User.add(idUsario)

答案 2 :(得分:0)

有2种添加m2m关系的方法。

1。单个附件。

user = User.objects.get(id=usario_id)
r1 = Raza.objects.get(id=1)

user.razas.add(r1)

2。批量

user = User.objects.get(id=usario_id)
razas = []

p1 = Raza.objects.get(id=1)
p2 = Raza.objects.get(id=2)
razas.append(p1)
razas.append(p2)

user.razas.add(*razas)