Python django多对多字段不保存
我有以下型号:Python django多对多字段不保存,python,django,django-models,many-to-many,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.CharFiel
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关系。我做错了什么?问题是这个循环运行了一次,并在中输入了所有的值。重复项没有再次运行,也没有抛出错误。问题是此循环运行了一次,并在中输入了所有值。重复项没有再次运行,也没有抛出错误。您已经为实体模型中的标记指定了相关的公司。所以,这就是为什么你的多对多价值没有得到保存。要解决此问题,请更换您的线路
e.tags.add(tag)
有,
我希望这会有所帮助。您已经为实体模型中的标记指定了相关的公司。所以,这就是为什么你的多对多价值没有得到保存。要解决此问题,请更换您的线路
e.tags.add(tag)
有,
我希望这有帮助。Django是否设置为自动提交?
CompanyTypeChoice
model是否良好?@BishwasMishra。我没有更改自动提交的默认设置。CompanyType具有值并正在向循环提供数据。我也发布了CompanyTypeChoice模型。Django是否设置为自动提交?CompanyTypeChoice
model是否良好?@BishwasMishra。我没有更改自动提交的默认设置。CompanyType具有值并正在向循环提供数据。我也发布了CompanyTypeChoice模型。