Y a-t-il un moyen de contourner la "nécessité d'avoir une valeur de clé primaire avant qu'une relation plusieurs-à-plusieurs peut être utilisée"?comment définir les valeurs par défaut pour manytomanyfield
J'ai un modèle avec plusieurs champs, y compris une relation plusieurs-à-plusieurs à un autre modèle. J'ai une fonction pour définir les valeurs par défaut sur ces champs lorsque je crée une nouvelle instance du modèle. Je fais ceci dans la vue en manipulant un HTTP GET. Le champ m2m est rendu en utilisant un formset.
Voici quelques pseudo-code décrivant la situation:
class MyRelatedModel(models.Model):
name = models.CharField(max_length=100,blank=True)
class MyModel(models.Model):
name = models.CharField(max_length=100,blank=True)
relatedModels = models.ManyToManyField("MyRelatedModel")
def initialize(self):
self.name = "my default name"
# this bit doesn't really matter...
# just assume I am creating a new set of RelatedModels that I want to associate with my this new MyModel...
newRelatedModels = []
for name in ["related model 1", "related model 2", "related model 3"]:
relatedModel = MyRelatedModel(name=name)
relatedModel.save()
newRelatedModels.append(relatedModel.id)
self.relatedModels = newRelatedModels # this is invalid!
def MyView(request):
if request.method == 'GET':
model = MyModel()
model.initialize()
form = MyForm(instance=model)
return render_to_response("my_template.html", {"form" : form}, context_instance=RequestContext(request))
Toutes les suggestions?
Je pense que je devrais peut-être gérer cela sur le côté de la forme plutôt que sur le côté du modèle, mais cela me déroute aussi.
Vous devez enregistrer le modèle avant raleted avec d'autres modèles. Quelque chose comme self.save() – danihp