django很多很多领域都没有保存

时间:2017-06-09 00:32:04

标签: python django django-models many-to-many

我有以下型号:

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关系。我做错了什么?

2 个答案:

答案 0 :(得分:0)

问题是这个循环运行了一次并输入了所有值。重复项没有再次运行并且没有抛出错误。

答案 1 :(得分:0)

您已指定related_name ="公司"对于您的实体模型中的标签。所以,这就是为什么你的许多人都没有得到拯救的原因。要解决此问题,请更换您的行

e.tags.add(tag)

用,

e.companies.add(tag)

我希望这会有所帮助。