2012-10-13 9 views
15

साथ छेड़छाड़ की गई है मैं त्रुटि प्राप्त हो रही:Django ManagementForm डेटा याद आ रही है या

[u'ManagementForm data is missing or has been tampered with'] 

मैं क्यों या तो समझ नहीं कर सकते हैं।

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

और यहाँ मेरे टेम्पलेट है:

<body> 
<form method="POST" action =""> 
{{ formset.management_form }} 
<table> 
{% for form in formset.forms %} 
      {{ form }} 
     {% endfor %} 

     </table> 
</form> 
</body> 

मैं पढ़ा है आप formset.management_form शामिल करने के लिए है, और मैं यहाँ मेरे विचार है। मैंने सोचा कि यह एक आसान फिक्स होगा, लेकिन मैं समस्या को समझने में सक्षम नहीं हूं।

+0

क्या आप सही टेम्पलेट दिखा रहे हैं? सबमिट बटन प्रतीत नहीं होता है। – Rohan

+0

जांचें कि क्या आपके टेम्पलेट में आपके फॉर्मेट नाम में टाइपो नहीं है – maazza

उत्तर

5

जब आप इनलाइन फॉर्मेट का उपयोग करते हैं, तो आपको ऑब्जेक्ट प्रदान करने की आवश्यकता होती है कि ऑब्जेक्ट्स संबंधित हैं।

# First, fetch the instance from the db 
workout = code_that_fetches_instance() 

if request.method == "POST" : 
    formset = WorkoutInlineFormSet(request.POST, instance=workout) 
    ... 
else: 
    formset = WorkoutInlineFormSet(instance=workout) 

अधिक जानकारी के लिए using an inline formset in a view पर दस्तावेज़ों में उदाहरण देखें।

तो workout और exercise अपने मॉडल हैं, तो आप अजगर सम्मेलन पालन करें और उन्हें Workout और Exercise नाम बदलने चाहिए। लोअरकेस workout उदाहरण होना चाहिए कि आपके फॉर्मेट में सभी अभ्यास जुड़े हुए हैं।

+0

फिर भी वही त्रुटि। अनुरोध के तहत फॉर्मेट के लिए घोषणा के दौरान त्रुटि हो रही है। Method == "POST" –

+0

मेरा परिवर्तन करने के बाद आपने कोड को फिर से लोड किया और फिर से सबमिट करने से पहले एक नया अनुरोध प्राप्त किया? जब आप मेरे सुझाए गए परिवर्तन के साथ अनुरोध प्राप्त करते हैं तो कृपया अपने प्रश्न को HTML आउटपुट के साथ अपडेट करें। – Alasdair

+0

मैंने इसे –

4

मुझे इस समस्या को पूरा किया है।

कारण डेटा में form-TOTAL_FORMS, form-INITIAL_FORMS and form-MAX_NUM_FORMS) जैसा कोई कारण नहीं है।

आपको {{ formset.as_p }} का उपयोग करना चाहिए, यह फ़ॉर्मेट से प्रबंधन_फॉर्म डेटा प्रस्तुत करेगा। यदि आप कस्टम फॉर्मेट प्रतिपादन करना चाहते हैं, तो आपको POST डेटा को mangement_form डेटा के साथ रहने के लिए फ़ॉर्मेट के प्रबंधन_फॉर्म को नहीं भूलना चाहिए।

संबंधित मुद्दे