Как создать пользовательскую кнопку в админке Django, которая создает много объектов?
У меня есть модель Студент:
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, которая выполняет действие вставки. Она будет связана с администратором Person, поскольку действие выполняется из 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)