1. from django.contrib import admin
    
  2. 
    
  3. from .models import (
    
  4.     Advisor,
    
  5.     Album,
    
  6.     Band,
    
  7.     Bee,
    
  8.     Car,
    
  9.     CarTire,
    
  10.     Event,
    
  11.     Inventory,
    
  12.     Member,
    
  13.     Profile,
    
  14.     ReleaseEvent,
    
  15.     School,
    
  16.     User,
    
  17.     VideoStream,
    
  18. )
    
  19. 
    
  20. 
    
  21. class WidgetAdmin(admin.AdminSite):
    
  22.     pass
    
  23. 
    
  24. 
    
  25. class CarAdmin(admin.ModelAdmin):
    
  26.     list_display = ["make", "model", "owner"]
    
  27.     list_editable = ["owner"]
    
  28. 
    
  29. 
    
  30. class CarTireAdmin(admin.ModelAdmin):
    
  31.     def formfield_for_foreignkey(self, db_field, request, **kwargs):
    
  32.         if db_field.name == "car":
    
  33.             kwargs["queryset"] = Car.objects.filter(owner=request.user)
    
  34.             return db_field.formfield(**kwargs)
    
  35.         return super().formfield_for_foreignkey(db_field, request, **kwargs)
    
  36. 
    
  37. 
    
  38. class EventAdmin(admin.ModelAdmin):
    
  39.     raw_id_fields = ["main_band", "supporting_bands"]
    
  40. 
    
  41. 
    
  42. class AlbumAdmin(admin.ModelAdmin):
    
  43.     fields = (
    
  44.         "name",
    
  45.         "cover_art",
    
  46.     )
    
  47.     readonly_fields = ("cover_art",)
    
  48. 
    
  49. 
    
  50. class SchoolAdmin(admin.ModelAdmin):
    
  51.     filter_vertical = ("students",)
    
  52.     filter_horizontal = ("alumni",)
    
  53. 
    
  54. 
    
  55. site = WidgetAdmin(name="widget-admin")
    
  56. 
    
  57. site.register(User)
    
  58. site.register(Car, CarAdmin)
    
  59. site.register(CarTire, CarTireAdmin)
    
  60. 
    
  61. site.register(Member)
    
  62. site.register(Band)
    
  63. site.register(Event, EventAdmin)
    
  64. site.register(Album, AlbumAdmin)
    
  65. site.register(ReleaseEvent, search_fields=["name"])
    
  66. site.register(VideoStream, autocomplete_fields=["release_event"])
    
  67. 
    
  68. site.register(Inventory)
    
  69. 
    
  70. site.register(Bee)
    
  71. 
    
  72. site.register(Advisor)
    
  73. 
    
  74. site.register(School, SchoolAdmin)
    
  75. 
    
  76. site.register(Profile)