如何在创建许多对象的 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
(带有 name
和 surname
字段)。我的情况只是一个例子。
我想在 Django 管理中创建一个按钮(在 Django 管理页面中实现它非常重要),它一次创建许多 Student
对象(name
和 lastname
我们从 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)
我有模特学生:
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
(带有 name
和 surname
字段)。我的情况只是一个例子。
我想在 Django 管理中创建一个按钮(在 Django 管理页面中实现它非常重要),它一次创建许多 Student
对象(name
和 lastname
我们从 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)