【问题标题】:add value in table manytomany django在表 manytomany django 中添加价值
【发布时间】:2019-06-19 19:40:05
【问题描述】:

嗨,我尝试在 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)

User 模型是 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

【问题讨论】:

    标签: django api many-to-many


    【解决方案1】:

    由于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.

    编辑:

    实际上你可以不通过实例添加用户,而是通过 pks。看到这个question

    【讨论】:

      【解决方案2】:

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

      Raza<b>.objects.get(id=idPerro)</b>.User.add(idUsario)

      【讨论】:

        【解决方案3】:

        有两种添加 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)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-05-16
          • 1970-01-01
          • 2012-02-04
          • 2015-06-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-27
          相关资源
          最近更新 更多