Django: Как добавить кнопку на страницу создания объекта?
У меня есть следующие модели:
from django.db import models
class Teacher(models.Model):
name = models.fields.CharField(max_length=255)
favorite_student = models.ForeignKey("Student", blank=True, null=True, on_delete=models.RESTRICT, related_name="+")
class Student(models.Model):
name = models.fields.CharField(max_length=255)
teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE)
def set_as_favorite_student(self):
self.teacher.favorite_student = self
Я также зарегистрировал оба Teacher
и Student
на странице администратора:
from .models import Teacher, Student
class TeacherAdmin(admin.ModelAdmin):
list_display = (
"id",
"name",
"favorite_student",
)
class StudentAdmin(admin.ModelAdmin):
list_display = (
"id",
"name",
"teacher",
)
У каждого teacher
должен быть любимый student
. Поэтому, когда появляется новый teacher
, я выполняю следующие действия:
- Go to django admin page
- Create a teacher
- Create a student
- Go back to the teacher, and set
favorite_student
to the created student
Вопрос: Для шага #3, как мне создать кнопку рядом с существующими кнопками, которая будет Save and set as favorite
, чтобы я мог избежать шага #4?
Я бы посоветовал работать с TabularInline
. В этом случае вы можете создать Student
в админке для Teacher
, это удобнее, и веб-приложение по-прежнему (более или менее) stateless:
from django.contrib import admin
class StudentInline(admin.TabularInline):
model = Student
fields = ['name', 'teacher']
class TeacherAdmin(admin.ModelAdmin):
list_display = (
'id',
'name',
'favorite_student',
)
inlines = [StudentInline]