Django管理员行动:添加"学生"到"学术课程"

时间:2015-03-20 19:17:15

标签: python django django-admin-actions

Django 1.7,Python 3.0,Postgresql

感谢您花时间阅读本文,我希望我在这里找不到明显的东西。

为简单起见,我们说我的模型是:

  • 学生
  • AcademicClass

我想使用Admin Actions来:

第一名:选择学生
第二名:创建新的尚未详细填写的AcademicClass,并附上之前附加的学生

添加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")

更新

被告知最好的方法是使用Django API“预填充表单”。正在努力。

1 个答案:

答案 0 :(得分:0)

好的,所以我想出来了:

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,)))

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