我有以下型号:
class Offering(models.Model):
entity = models.OneToOneField('companies.entity')
company_type = models.ManyToManyField(CompanyTypeChoice, blank=True)
@python_2_unicode_compatible
class Tag(models.Model):
word = models.CharField(max_length=64)
@python_2_unicode_compatible
class Entity(models.Model):
tags = models.ManyToManyField(Tag,related_name='companies', blank=True, null=True)
class CompanyTypeChoice(models.Model):
title = models.CharField(max_length=64)
我有以下循环,我想创建一个M2M标记关系:
offerings = Offering.objects.all()
for o in offerings:
for ct in o.company_type.all():
tag = Tag.objects.get(word=ct.title)
e = Entity.objects.get(pk=o.entity.id)
e.tags.add(tag)
这不会保存M2M关系。我做错了什么?
答案 0 :(得分:0)
问题是这个循环运行了一次并输入了所有值。重复项没有再次运行并且没有抛出错误。
答案 1 :(得分:0)
您已指定related_name ="公司"对于您的实体模型中的标签。所以,这就是为什么你的许多人都没有得到拯救的原因。要解决此问题,请更换您的行
e.tags.add(tag)
用,
e.companies.add(tag)
我希望这会有所帮助。