python 2.7 - yet another struggle with django inline formsets -


ok, after spending 8 hours of search , read, think time ask. creating school app practice django, , stuck @ grading part. have "matricula" model, relates student , class, , "parcial" model defines period of time within activities take place. also, there "grade" model creates task graded, defined "parcial" , "class", , "student_grade" model relate "grade", "matricula" , numeric value (this model intended assign grade every student).

here scenario:

models:

class grade(models.model):      parcial = models.foreignkey("configuracion_sam.estructura_subperiodo")     materia = models.foreignkey("configuracion_sam.materia")     type = models.foreignkey("grade_type")      def __unicode__(self):         return self.parcial.name + " " + self.materia.nombre + " " + self.materia.clase.clase_name   class student_grade(models.model):     assignment = models.foreignkey("grade")     student = models.foreignkey("configuracion_sam.matricula")     grade = models.floatfield()      def __unicode__(self):         return self.assignment.materia.nombre+" "+self.student.estudiante.usuario.name 

view:

def create_grade(request, grade_id):     grade = grade.objects.get(pk = grade_id)     students = matricula.objects.filter(clase__id = grade.materia.clase_id).order_by("estudiante__usuario__last_name")     student_grade_formset = inlineformset_factory(grade, student_grade, = len(students))     context = requestcontext(request)     formset = student_grade_formset(instance = grade, initial = students.values())     if request.method == "post":         formset = student_grade_formset(request.post, instance = grade)         if formset.is_valid():             formset.save()              return redirect("/faltas/disciplina/")         else:             form in formset:                 print form.errors                 return render_to_response("academic_office_sam/students_grades",                               {"students":students, "formset":formset},                               context)      else:         return render_to_response("academic_office_sam/students_grades",                               {"students":students, "formset": formset},                               context) 

notice how in view trying use inline formsets that, assigning specific "grade" instance, can create several registries several students @ same time. in case, setting = len(students) create number of forms corresponding number of students registered in same class "grade" related.

now question: how set initial value "matricula" field on student_grade form every student resulting in query "students"? have tried:

initial = students initial = students.values() queryset = students queryset = students.values() 

without success. maybe doesnt work "matricula" model not declared in formset? read initial parameter working "extra" forms, couldnt manage show up.

thanks in advance taking time read this, , helping if can!

rodrigo

student_grade_formset = inlineformset_factory(grade, student_grade, extra=len(students))  if request.post:     formset = student_grade_formset(request.post)     if formset.is_valid():         formset.instance = grade         formset.save() else:     formset = student_grade_formset()      inline_form, data in zip(formset.forms, students.values('pk')):         inline_form.initial = {'student': data} 

Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -