добавьте ценность в таблицу много джанго - PullRequest
0 голосов
/ 26 января 2019

привет, я пытаюсь добавить одно и то же значение в таблицу многие ко многим в 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

Ответы [ 3 ]

0 голосов
/ 26 января 2019

Вы редактируете отношение конкретного объекта, например:

Raza<b>.objects.get(id=idPerro)</b>.User.add(idUsario)
0 голосов
/ 26 января 2019

есть 2 способа добавления отношения m2m.

1.Одиночное вложение.

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

user.razas.add(r1)

2.Bulk

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)
0 голосов
/ 26 января 2019

Вы не должны называть поля вашей модели, начинающиеся с заглавной буквы, из-за 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 .

edit:

На самом деле вы можете добавлять пользователей не по экземплярам, ​​а с помощью pks.Смотрите этот вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...