Browse Source

add bookreferences to admin panel

master
Mohsen Taba 5 months ago
parent
commit
7a3a674677
  1. 3
      apps/hadis/admin/__init__.py
  2. 23
      apps/hadis/admin/reference.py

3
apps/hadis/admin/__init__.py

@ -1,3 +1,4 @@
from .category import *
from .hadis import *
from .transmitter import *
from .transmitter import *
from .reference import *

23
apps/hadis/admin/reference.py

@ -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)
Loading…
Cancel
Save