我在应用程序中有以下模型。
课 学生 评估 父
课程和学生通过评估建立了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有没有简单的方法?
任何建议表示赞赏。
感谢。
答案 0 :(得分:1)
尝试这样的事情:
models = list(models) # maybe this can be omitted
models.sort(key=lambda e: e.student.parent)