2017-07-19 1 views
0

J'ai actuellement les 3 modèles suivants<XXX> doit avoir une valeur pour le champ xxx avant que ce nombre-à-plusieurs peuvent être utilisés

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) 

Maintenant, je tente d'insérer la valeur dans le modelNormalBodyPartResult de cette façon

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 

et je reçois l'erreur

<modelNormalBodyPartResult: modelNormalBodyPartResult object> needs to have a value for field "modelnormalbodypartresult" before this many-to-many relationship can be used. 

Je regardais this post mais ne pouvait toujours pas comprendre la question des suggestions à cet égard serait appréciée.

+0

avez-vous défini une nouvelle obj de modelNormalBodyPartResult En insérant la valeur? –

+0

non Je crée toujours un nouvel objet comme celui-ci modelobject.objects.create (...) –

+0

Etes-vous sûr de vouloir en avoir plusieurs? –

Répondre

1

Vous devez créer un objet, puis ajoutez les ManyToMany objets qui lui sont liés,

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()