Как получить экземпляр модели из инлайнов в 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. Я не могу найти никакой информации о том, как это сделать?
Может ли кто-нибудь помочь мне с этим?