71 lines
1.9 KiB
Python
71 lines
1.9 KiB
Python
# 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")
|
|
}),
|
|
)
|