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, я выполняю следующие действия:

  1. Go to django admin page
  2. Create a teacher
  3. Create a student
  4. 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]
Вернуться на верх