Why are read-only form fields in Django a bad idea?

前端 未结 4 1623
天命终不由人
天命终不由人 2020-12-25 11:40

I\'ve been looking for a way to create a read-only form field and every article I\'ve found on the subject comes with a statement that \"this is a bad idea\". Now for an in

4条回答
  •  滥情空心
    2020-12-25 11:49

    for student/grading example, I have come up with a solution, where students are non editable fields and grades can be edited and updated as required. something like this

    I am combining students objects and formset for grades in grade_edit class in view.py using zip function.

    def grade_edit(request, id):
        student = student.objects.get(id=id)
        grades = grades.objects.filter(studentId=id)
        gradeformset = GradeFormSet(request.POST or None)
        if request.POST:
            gradeformset = GradeFormSet(request.POST, request.FILES, instance=student)
            if gradeformset.is_valid():
                gradeformset.save()
                grades = grades.objects.filter(studentId=id)
                return render(request, 'grade_details.html', {'student': student, 'grades': grades})
        else:
            gradeformset = GradeFormSet(instance=student)
            grades = grades.objects.filter(studentId=id)
            zips = zip(grades, gradeformset)
        return render(request, 'grade_edit.html', {'zips': zips, 'student': student, 'gradeformset': gradeformset })
    

    My template looks something like this

    
         {% for field in gradeformset.forms.0 %}
              {% if not field.is_hidden %}
                   
              {% endif %}
         {% endfor %}
         
         {% for f in gradeformset.management_form %}
              {{ f }}
         {% endfor %}
         {% for student, gradeform in zips %}
              
                 {% for hidden in form.hidden_fields %}
                     {{ hidden }}
                 {% endfor %}
                 
         {% endfor %}
    
    {{ field.label }}
    {{ student.name }} {{ gradeform.gradeA }} {{ gradeform.gradeB }}

    You can read more about Django formset here http://whoisnicoleharris.com/2015/01/06/implementing-django-formsets.html

提交回复
热议问题