2012-03-03 65 views
0

我在应用程序中有以下模型。Django - 在处理它之前对表单进行排序?

课 学生 评价 家长

课程和学生必须通过评估一个M2M关系。

我有一个内联formset,它允许我在创建新课程的同时创建评估记录。

我想在处理它之前对表单集进行排序,这样我可以将所有共享共同父记录的记录放在一起,并在保存记录时执行一些其他任务。

这里有一个简单的例子:

EvaluationFormset = inlineformset_factory(Lesson, Evaluation, extra=1, max_num=10) 


if request.method == 'POST': 
    form = LessonForm(request.POST, instance=lesson, user=request.user) 
    formset = EvaluationFormset(request.POST, instance=lesson) 

    if form.is_valid() and formset.is_valid(): 
     lesson = form.save() 
     models = formset.save(commit=False) 

     #Before I do this, I need to sort the formset based on evaluation.student.parent. 
     #In the loop, I will perform an additional the first record for each parent 

     for i in models: 
      i.user = request.user 
      i.lesson = lesson 
      i.save() 

有没有什么简单的方法,这在Django?

任何意见赞赏。

谢谢。

+2

请张贴样本。 – danihp 2012-03-03 19:41:19

+0

新增........... – Dan 2012-03-03 19:58:11

回答

1

尝试这样:

models = list(models) # maybe this can be omitted 
models.sort(key=lambda e: e.student.parent) 
相关问题