|
|
|
@ -115,6 +115,26 @@ class BookAuthorAdmin(ModelAdmin): |
|
|
|
return first.get('text', '-') |
|
|
|
return '-' |
|
|
|
|
|
|
|
@admin.register(BookReferenceImage) |
|
|
|
class BookReferenceImageAdmin(admin.ModelAdmin): |
|
|
|
# Display the custom string, plus the raw order and book link for convenience |
|
|
|
list_display = ("display_name", "order", "book_reference") |
|
|
|
|
|
|
|
# optimize database queries since we are accessing foreign key data (book_reference) |
|
|
|
list_select_related = ("book_reference",) |
|
|
|
|
|
|
|
def display_name(self, obj): |
|
|
|
# Implements: f"{self.book_reference.title[0]['text']} - Image {self.order}" |
|
|
|
try: |
|
|
|
# We use safe navigation to prevent admin crashes if data is missing |
|
|
|
book_title = obj.book_reference.title[0]['text'] |
|
|
|
return f"{book_title} - Image {obj.order}" |
|
|
|
except (AttributeError, IndexError, KeyError, TypeError): |
|
|
|
# Fallback if the title structure isn't exactly as expected |
|
|
|
return f"Unknown Book - Image {obj.order}" |
|
|
|
|
|
|
|
# Sets the column header name in the admin panel |
|
|
|
display_name.short_description = "Image Reference" |
|
|
|
|
|
|
|
class BookAttributeAdmin(ModelAdmin): |
|
|
|
""" |
|
|
|
@ -153,4 +173,5 @@ class BookAttributeAdmin(ModelAdmin): |
|
|
|
|
|
|
|
project_admin_site.register(BookReference, BookReferenceAdmin) |
|
|
|
project_admin_site.register(BookAuthor, BookAuthorAdmin) |
|
|
|
project_admin_site.register(BookAttribute, BookAttributeAdmin) |
|
|
|
project_admin_site.register(BookAttribute, BookAttributeAdmin) |
|
|
|
project_admin_site.register(BookReferenceImage, BookReferenceImageAdmin) |