嗨,我尝试在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
答案 0 :(得分:0)
由于PEP8,因此您不应以大写字母开头来命名模型的字段。
使用函数命名规则:小写字母,必要时用下划线分隔单词,以提高可读性。
将User
重命名为users
(因为您的m2m连接意味着双方都有多个实例),应用迁移并将User
的实例添加到Raza
的实例中,如下所示:
user = User.objects.get(id=usario_id)
Raza.objects.get(id=perro_id).users.add(user)
编辑:
实际上,您可以按实例而不是按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)