2017-07-19 27 views
0

目前,我有以下3種型號<XXX>需要這麼多的一對多關係,可以使用之前有現場XXX值

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. 

我看着this後,但仍然無法弄清楚這個問題的任何建議,將不勝感激。

+0

做你所定義modelNormalBodyPartResult新的OBJ而將價值? –

+0

不,我總是創建一個像這樣的新對象modelobject.objects.create(...) –

+0

你確定你想要多對多嗎? –

回答

1

你必須首先創建一個對象,然後添加ManyToMany相關的對象吧,

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() 
相關問題