Django ManagementForm de données est manquant ou a été falsifié
Je reçois l'erreur:
[u'ManagementForm data is missing or has been tampered with']
Je ne vois pas pourquoi non plus. Voici mon point de vue:
def CreateWorkout(request):
WorkoutInlineFormSet = inlineformset_factory(workout,exercise)
if request.method == "POST" :
formset = WorkoutInlineFormSet(request.POST)
if formset.is_valid():
formset.save();
else:
formset = WorkoutInlineFormSet()
return render_to_response('submit.html',{'formset': formset},context_instance=RequestContext(request))
Et voici mon template:
<body>
<form method="POST" action ="">
{{ formset.management_form }}
<table>
{% for form in formset.forms %}
{{ form }}
{% endfor %}
</table>
</form>
</body>
J'ai lu que vous devez inclure la formset.management_form
, et je l'ai. Je pensais que ce serait une solution facile, mais je n'ai pas été en mesure de comprendre le problème.
- Montrez-vous bon modèle? Il ne semble pas être le bouton soumettre.
- vérifiez si vous n'avez pas une faute de frappe dans votre formset nom de votre modèle
Vous devez vous connecter pour publier un commentaire.
J'ai rencontrer ce problème.
La raison en est, il n'existe PAS quelque chose comme
form-TOTAL_FORMS, form-INITIAL_FORMS and form-MAX_NUM_FORMS)
dans votrePOST
de données.Vous devez utiliser
{{ formset.as_p }}
, cela rendra les management_form de données à partir du formset. Si vous voulez faire de la coutume formset de rendu, vous ne devriez pas oublier les management_form du formset de laisser publier des données avec le mangement_form de données.Lorsque vous utilisez inline formset, vous devez fournir l'instance que les objets se rapportent.
Voir l'exemple de la doc sur à l'aide d'un inline formset en vue pour plus d'informations.
Si
workout
etexercise
sont vos modèles, vous devez suivre le python de la convention et de les renommerWorkout
etExercise
. Minusculesworkout
devrait être l'instance que tous les exercices de votre formset sont liés.workout
etexcercise
, mais il serait beaucoup plus clair d'utiliserWorkout
etExcercise
. La création d'une nouvelle instance et d'objets liés à la même temps est un problème différent. Cette question peut-être ce que vous cherchez. Si non, pouvez-vous poser une nouvelle question.if form.is_valid and formset1.is_valid() and formset2.is_valid():
qui a probablement reportée à la validation du contenu de rendu et a causé un accident... mais pas encore sûr que je n'ai pas produit le bug moi-même)Changer cela:
à ceci: