from django.contrib import admin from django.apps import apps from equipment.models import Equipment, KegType, State, \ EquipmentMaintenanceLine, EquipmentMaintenance class AdminCreateFormMixin: """ Mixin to easily use a different form for the create case (in comparison to "edit") in the django admin Logic copied from `django.contrib.auth.admin.UserAdmin` """ add_form = None def get_form(self, request, obj=None, **kwargs): defaults = {} if obj is None: defaults['form'] = self.add_form defaults.update(kwargs) return super().get_form(request, obj, **defaults) class MainenanceLineInline(admin.TabularInline): model = EquipmentMaintenanceLine extra = 1 class EquipmentInline(admin.TabularInline): model = Equipment extra = 4 @admin.register(EquipmentMaintenance) class MaintenanceAdmin(admin.ModelAdmin): # list_display_links = ['equipment',] list_display = ['created_date', 'equipment', 'notes',] inlines = [ MainenanceLineInline, ] @admin.register(Equipment) class EquipmentAdmin(admin.ModelAdmin): readonly_fields = ('id',) list_display = ['id', 'equipment_type', 'keg_type', 'state'] list_editable = ['state', 'state'] @admin.register(KegType) class KegTypeAdmin(admin.ModelAdmin): list_display = ['name', 'manufacturer', 'size_gal',] inlines = [ EquipmentInline, ] # class EquipmentAdmin(admin.ModelAdmin): # list_display = ['name','equipment_type','keg_type','state'] @admin.register(State) class StateAdmin(admin.ModelAdmin): list_display = ['name'] app = apps.get_app_config('equipment') for model_name, model in app.models.items(): try: admin.site.register(model) except admin.exceptions.AlreadyRegistered: pass