Улучшение генератора названий для букетов

- Добавлена функциональность для кнопок 'ВЗЯТЬ' и 'УДАЛИТЬ'
- Реализовано получение и удаление названий из базы данных
- Исправлена фильтрация названий
- Исправлена проблема с обработчиками событий
This commit is contained in:
2026-01-23 14:10:00 +03:00
parent 59f7a7c520
commit 84cfc5cd47
4 changed files with 277 additions and 135 deletions

View File

@@ -1816,8 +1816,12 @@ class RandomBouquetNamesView(View):
count = int(request.GET.get('count', 3))
# Ограничиваем максимум до 100
count = min(count, 100)
names = list(BouquetName.objects.order_by('?')[:count].values_list('name', flat=True))
return JsonResponse({'names': names})
# Получаем случайные названия с ID (любые, не только одобренные)
queryset = BouquetName.objects.order_by('?')[:count]
names_data = [{'id': obj.id, 'name': obj.name} for obj in queryset]
return JsonResponse({'names': names_data})
class GenerateBouquetNamesView(View):
@@ -1843,3 +1847,25 @@ class GenerateBouquetNamesView(View):
})
else:
return JsonResponse({'success': False, 'error': msg}, status=400)
class DeleteBouquetNameView(View):
"""Удаляет конкретное название из базы"""
def delete(self, request, pk):
try:
name_obj = BouquetName.objects.get(pk=pk)
name_obj.delete()
return JsonResponse({'success': True})
except BouquetName.DoesNotExist:
return JsonResponse({'success': False, 'error': 'Название не найдено'}, status=404)
except Exception as e:
return JsonResponse({'success': False, 'error': str(e)}, status=500)
class GetBouquetNamesCountView(View):
"""Возвращает количество названий в базе"""
def get(self, request):
count = BouquetName.objects.count()
return JsonResponse({'count': count})