# garden/admin.py from django.contrib import admin from .models import Plant, Greenhouse class PlantInline(admin.TabularInline): """Позволяет редактировать растения прямо на странице теплицы.""" model = Plant extra = 0 fields = ( "name", "species", "family", "height_cm", "is_flowering", "endangered", ) show_change_link = True @admin.register(Greenhouse) class GreenhouseAdmin(admin.ModelAdmin): list_display = ("id", "name", "location", "climate_zone", "plant_count") list_filter = ("climate_zone",) search_fields = ("name", "location") ordering = ("name",) inlines = [PlantInline] @admin.display(description="Кол-во растений") def plant_count(self, obj): return obj.plants.count() @admin.register(Plant) class PlantAdmin(admin.ModelAdmin): list_display = ( "id", "name", "species", "family", "greenhouse", "height_cm", "is_flowering", "endangered", "planted_at", ) list_filter = ( "greenhouse", "family", "is_flowering", "endangered", "origin_country", ) search_fields = ("name", "species", "family", "origin_country") date_hierarchy = "planted_at" ordering = ("-planted_at",) list_select_related = ("greenhouse",) autocomplete_fields = ("greenhouse",) list_per_page = 25 fieldsets = ( ("Основное", { "fields": ("name", "species", "family", "greenhouse") }), ("Характеристики", { "fields": ("height_cm", "watering_frequency_days", "is_flowering", "endangered") }), ("Происхождение", { "fields": ("planted_at", "origin_country") }), )