Динамически добавлять отношение ManyToMany к объектам Django - PullRequest
4 голосов
/ 18 января 2011

Мой класс компании имеет несколько отношений M2M с самим собой

Класс фирмы (models.Model):

divisions = models.ManyToManyField('self', symmetrical=False, related_name="parent_companies")
parents = models.ManyToManyField('self', symmetrical=False, related_name="divisions_companies")
comp = models.ManyToManyField('self', symmetrical=False, related_name="comp")
friends = models.ManyToManyField('self', symmetrical=False, related_name="friends")

Я хотел бы иметь возможность динамически добавлять отношения M2M, как это, но это, очевидно, не работает. Есть ли способ сделать это динамически?

                    company, was_created = Company.objects.get_or_create(name=info)
                    setattr(self,key, company)

Ответы [ 2 ]

5 голосов
/ 18 января 2011

Понял.Просто нужно передать список вместо ..

 company, was_created = Company.objects.get_or_create(name=info)
                        setattr(self,key, [company,])
2 голосов
/ 18 января 2011

Синтаксис для добавления M2M: field.add(obj_pk or obj)

company, was_created = Company.objects.get_or_create(name=info)
self.comp.add(company)
...