Упрощена модель Shop и реализован полный CRUD для магазинов
- Упрощена модель Shop: только name обязательное поле - Удалены поля: district, режим работы, координаты, инструкции - Description перенесено после name - Все поля кроме name теперь опциональные - Создан полный CRUD для магазинов: * ShopListView - список магазинов с пагинацией * ShopCreateView - создание нового магазина * ShopUpdateView - редактирование магазина * ShopDeleteView - удаление с подтверждением - Создана форма ShopForm с Bootstrap стилями - Поле "Название магазина" помечено как обязательное (*) - Настроена обработка PhoneNumberField - Созданы шаблоны: * shop_list.html - таблица со списком магазинов * shop_form.html - форма создания/редактирования * shop_confirm_delete.html - подтверждение удаления - Настроены URLs для приложения shops - Добавлена ссылка "Магазины" в главную навигацию - Обновлена админ-панель shops 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,3 +1,52 @@
|
||||
from django.shortcuts import render
|
||||
from django.urls import reverse_lazy
|
||||
from django.views.generic import ListView, CreateView, UpdateView, DeleteView
|
||||
from .models import Shop
|
||||
from .forms import ShopForm
|
||||
|
||||
# Create your views here.
|
||||
|
||||
class ShopListView(ListView):
|
||||
"""Список всех магазинов"""
|
||||
model = Shop
|
||||
template_name = 'shops/shop_list.html'
|
||||
context_object_name = 'shops'
|
||||
paginate_by = 20
|
||||
|
||||
def get_queryset(self):
|
||||
"""Показываем только активные магазины по умолчанию"""
|
||||
queryset = super().get_queryset()
|
||||
return queryset.filter(is_active=True)
|
||||
|
||||
|
||||
class ShopCreateView(CreateView):
|
||||
"""Создание нового магазина"""
|
||||
model = Shop
|
||||
form_class = ShopForm
|
||||
template_name = 'shops/shop_form.html'
|
||||
success_url = reverse_lazy('shops:shop_list')
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context['title'] = 'Создать магазин'
|
||||
context['button_text'] = 'Создать'
|
||||
return context
|
||||
|
||||
|
||||
class ShopUpdateView(UpdateView):
|
||||
"""Редактирование магазина"""
|
||||
model = Shop
|
||||
form_class = ShopForm
|
||||
template_name = 'shops/shop_form.html'
|
||||
success_url = reverse_lazy('shops:shop_list')
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context['title'] = f'Редактировать: {self.object.name}'
|
||||
context['button_text'] = 'Сохранить'
|
||||
return context
|
||||
|
||||
|
||||
class ShopDeleteView(DeleteView):
|
||||
"""Удаление магазина"""
|
||||
model = Shop
|
||||
template_name = 'shops/shop_confirm_delete.html'
|
||||
success_url = reverse_lazy('shops:shop_list')
|
||||
|
||||
Reference in New Issue
Block a user