from django.shortcuts import render, get_object_or_404, redirect from django.views.decorators.http import require_POST from django.db.models import Count from plants.models import Location, Plant def location_list(request): if request.method == 'POST': name = request.POST.get('name', '').strip() if name: Location.objects.get_or_create(name=name) return redirect('location_list') locations = Location.objects.annotate(plant_count=Count('plants')) return render(request, 'plants/locations.html', {'locations': locations}) def location_edit(request, pk): location = get_object_or_404(Location, pk=pk) if request.method == 'POST': name = request.POST.get('name', '').strip() if name: location.name = name location.save() return redirect('location_list') return render(request, 'plants/location_edit.html', {'location': location}) @require_POST def location_delete(request, pk): location = get_object_or_404(Location, pk=pk) Plant.objects.filter(location=location).update(location=None) location.delete() return redirect('location_list')