Django 管理操作:将 "Students" 添加到 "Academic Class"

Django Admin Actions: Add "Students" to "Academic Class"

Django 1.7,Python3.0,Postgresql

感谢您花时间阅读本文,我想我在这里漏掉了一些明显的东西。

为简单起见,假设我的模型是:

我想使用 Admin Actions 来:

第一名: Select 同学们
第 2 次: 创建新的尚未填写详细信息的 AcademicClass 以及之前附加的 Students

添加 actions = [make_new_academic_class] 并链接到该页面非常简单,但我完全不知道如何将查询集附加到那个新的 AcademicClass。

    students = ManyToManyField('mgmt.Student', related_name='classes')

我相信我的一切都是正确的,除了这部分:

def make_new_academic_class(modeladmin, request, queryset):
for stdnt in queryset:
    print(stdnt.id)  #obviously want to save this somehow
                     #then want to insert it in the AcademicClass-Student relationship
return redirect("/school/class/add")

更新

被告知最好的方法是 "pre-populate the form" 使用 Django API。正在努力。

好的,所以我明白了:

def make_class(modeladmin, request, queryset):
    new_class = Class()
    new_class.save()
    for student in queryset:
        new_class.students.add(student.id)
    return redirect(reverse('admin:mgmt_class_change', args=(new_class.id,)))

我对此采取了几种方法,这是有效的方法。希望以后对某人(或我自己)有所帮助。