2010-07-10 10 views
6

मुझे लगता है मैं नीचे के रूप में एक views.py हैप्रबंधन रूप त्रुटि ('ManagementForm डेटा याद आ रही है या के साथ छेड़छाड़ की गई है')

class Educational_Qualification(models.Model): 
    user = models.ForeignKey(User) 
    exam = models.CharField(max_length=40) 
    pass_month = models.CharField(max_length=40) 

नीचे के रूप में एक models.py वर्ग है

def create_qualification(request): 
QFormSet = modelformset_factory(Educational_Qualification, extra=3, exclude=("user",)) 
if request.method == "POST": 
    formset = QFormSet(request.POST, request.FILES) 

    if formset.is_valid(): 
    formset.save() 
    for form in formset.forms: 
    if form.is_valid(): 
    quali= form.save(commit=False) 
    quali.user = request.user 
    quali.save() 

    return HttpResponse("Saved") 
    else: 
    return HttpResponse("Snafu") 
else: 
    formset = QFormSet() 
return render_to_response("register/edu.html", {"formset":formset}, context_instance=RequestContext(request)) 

जब मैं फॉर्म जमा करता हूं, तो यह सत्यापन त्रुटि को फेंकता है। यह बताते हुए कि प्रबंधनफॉर्म डेटा गुम है या '

के साथ छेड़छाड़ की गई है मेरे पास मेरे टेम्पलेट में formet.management_form है।

समस्या क्या हो सकती है?

उत्तर

24

त्रुटि आपके विचारों या मॉडल में नहीं है, लेकिन टेम्पलेट्स में है।

सही तरीके से formset रेंडर करने के लिए, यह है:

<form method="post" action=""> 
    <table> 
     {{ formset }} 
    </table> 
</form> 

या

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

मुझे लगता है, आप प्रबंधन प्रपत्र को शामिल किए बिना टेम्पलेट्स में रूपों पर पाशन कर रहे हैं?

+0

धन्यवाद, यह मेरा इस मुद्दे को ठीक किया! – vdboor

+0

कमाल! धन्यवाद: डी – DanH

0

यह भी होता है यदि इसमें कई विचार शामिल हैं और उनमें से एक फॉर्मेट उपसर्ग से अवगत नहीं है।

प्राप्त करें दृश्य:

def someview(request): 
... 
    formset = Formset(prefix="foo") 
... 

पोस्ट दृश्य (संभावित एक अजाक्स प्रपत्र हैंडलर पेश करें):

def ajaxview(request): 
... 
    formset = Formset(request.POST, prefix="foo") # here 
... 
संबंधित मुद्दे