如何在创建许多对象的 Django admin 中创建自定义按钮?

How to create custom button in Django admin, which create many object?

我有模特学生:

from django.db import models
from django.contrib import admin


class Student(models.Model):
    name = models.CharField(max_length=30, default='')
    lastname = models.CharField(max_length=30, default='')
    grade= models.CharField(max_length=8, default='')

class StudentAdmin(admin.ModelAdmin):
    list_display= ('name','lastname','grade')

from django.contrib import admin
from .models import *

admin.site.register(Student, StudentAdmin)

想象一下,我有一个额外的模型 Person(带有 namesurname 字段)。我的情况只是一个例子。 我想在 Django 管理中创建一个按钮(在 Django 管理页面中实现它非常重要),它一次创建许多 Student 对象(namelastname 我们从 Person,空 grade 字段,我们可以在以后填写)。

您可以使用 Admin Actions 来执行此操作:

首先定义一个 create_student 函数来执行插入 activity。这将链接到 Person Admin,因为该操作是从 Persons 执行的。例如:

@admin.action(description='Create students from selected persons')
def create_student(modeladmin, request, queryset):
    for person in queryset:
        s = Student(name = person.name, lastname=person.lastname)
        s.save()

因此您可以将操作添加到 PersonAdmin

class PersonAdmin(admin.ModelAdmin):
    actions = [create_student]

admin.site.register(Person, PersonAdmin)