Как получить экземпляр модели из инлайнов в django ModelAdmin

Пример:

Предположим, у меня есть две модели:

from django.db import models

# Create your models here.
class Author(models.Model):
    name = models.CharField(max_length=5, default='admin')

    def __str__(self):
        return self.name

class Book(models.Model):
    active = models.BooleanField(default=True)
    name = models.CharField(max_length=5, default='admin')
    author = models.ForeignKey(Author, null=True, on_delete=models.CASCADE)
    upload = models.FileField(upload_to ='uploads/', null=True)

    def __str__(self):
        return self.name

А это моя настройка администратора:

from django.contrib import admin
from .models import Author, Book

class BookInLine(admin.StackedInline):
    model = Book
    extra = 0

@admin.register(Author)
class AuthorAdmin(admin.ModelAdmin):
    list_display = ['name']
    inlines = [BookInLine]

    def get_inline_object(self, request):
        inlineObject = self.get_inline_instances(request)[0]
        #this gives me access to BookInLine object.
        #an example of what I need to get is:
        return inlineObject.instance

Проблема в том, что объекты ModelInLine не имеют атрибутов instance, связанных с ними.

Я могу получить родительский экземпляр, то есть экземпляр модели Author, написав следующий метод в классе BookInLine:

def get_parent_object_from_request(self, request):
        resolved = resolve(request.path_info)
        if resolved.kwargs:
            return self.parent_model.objects.get(pk=resolved.kwargs["object_id"])
        return None

это даст мне экземпляр модели Author, что мне нужно, так это получить доступ к экземпляру модели Book, связанному с этим change_view. Я не могу найти никакой информации о том, как это сделать?

Может ли кто-нибудь помочь мне с этим?

Вернуться на верх