Django <;XXX>;在使用此多对多关系之前,需要为字段xxx设置一个值

Django <;XXX>;在使用此多对多关系之前,需要为字段xxx设置一个值,django,many-to-many,django-orm,Django,Many To Many,Django Orm,我目前有以下3种型号 class modelToolName(models.Model): tool_name = models.CharField(max_length=250,unique=True) class modelBodyPart(models.Model): part_name = models.CharField(max_length=128,unique=True) class modelNormalBodyPartResult(models.Model)

我目前有以下3种型号

class modelToolName(models.Model):
    tool_name = models.CharField(max_length=250,unique=True)

class modelBodyPart(models.Model):
    part_name = models.CharField(max_length=128,unique=True)

class modelNormalBodyPartResult(models.Model):
    body_part = models.ForeignKey(modelBodyPart, default=None)
    tool_name = models.ManyToManyField(modelToolName, default=None, blank=True)
    result = models.TextField(blank=True, null=True)
现在我正试图以这种方式将值插入
modelNormalBodyPartResult

result="xxxx"
bodpart = modelBodyPart.objects.get(part_name="xxx") #--->returns object fine
toolqset = modelToolName.objects.get(tool_name="xxx")#--->returns object fine
modelNormalBodyPartResult.objects.create(body_part=bodpart,tool_name = toolqset,result=result) --->error
我得到了错误

<modelNormalBodyPartResult: modelNormalBodyPartResult object> needs to have a value for field "modelnormalbodypartresult" before this many-to-many relationship can be used.
需要为字段“modelnormalbodypartresult”设置一个值,然后才能使用此多对多关系。

我看了这篇博文,但仍然无法找出问题所在。对此,如果您有任何建议,我们将不胜感激。

您必须先创建一个对象,然后向其中添加大量相关对象

result="xxxx"
bodpart = modelBodyPart.objects.get(part_name="xxx")
toolqset = modelToolName.objects.get(tool_name="xxx")
item = modelNormalBodyPartResult.objects.create(body_part=bodpart,result=result)
item.tool_name.add(toolqset)
item.save()

插入值时是否定义了modelNormalBodyPartResult的新对象?否我始终创建一个新对象,如modelobject.objects.create(…)您确定要多对多吗?@DanielRoseman是的原因是
modelToolName
的实例可以与多个
modelNormalBodyPartResult
关联,同时
modelNormalBodyPartResult
可以有多个条目与
modelToolName
实例关联