Django - 在处理之前对formset进行排序?

时间:2012-03-03 19:30:00

标签: django django-forms

我在应用程序中有以下模型。

课 学生 评估 父

课程和学生通过评估建立了m2m关系。

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

我想在处理之前对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有没有简单的方法?

任何建议表示赞赏。

感谢。

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

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