Введение
Django остаётся одним из самых востребованных фреймворков для создания веб-приложений на Python. По данным опроса JetBrains за 2025 год, Django используют 48% Python-разработчиков, работающих с вебом. Но даже опытные бэкендеры тратят до 40% времени на шаблонные задачи: написание моделей, сериализаторов, тестов и настройку админки.
Современные AI-инструменты (ChatGPT, Claude, Gemini) позволяют сократить эту рутину, если правильно формулировать запросы. Я собрал 7 проверенных промтов, которые использую в своей ежедневной работе с Django. Каждый — с реальным примером и результатом.
1. Промт для генерации моделей с миграциями
Самый частый сценарий — нужно быстро описать модель, связать её с другими, добавить индексы и мета-параметры. Вместо того чтобы вспоминать синтаксис каждого поля, используй такой промт:
«Напиши Django-модель для [сущность]. Включи связи ForeignKey к [модели], ManyToMany к [модели], поля даты created_at и updated_at с auto_now_add/auto_now. Добавь Meta с ordering и verbose_name. Сгенерируй команды makemigrations и migrate. Используй Python 3.12, Django 5.1.»
Пример:
Я попросил сгенерировать модель для интернет-магазина: «Напиши модель Product с категорией (ForeignKey), тегами (ManyToMany), ценой DecimalField, описанием TextField и датами. Добавь Meta с ordering по цене и verbose_name». AI вернул готовый код за 10 секунд, включая импорты.
from django.db import models
class Product(models.Model):
category = models.ForeignKey('Category', on_delete=models.CASCADE, related_name='products')
tags = models.ManyToManyField('Tag', blank=True)
name = models.CharField(max_length=255)
price = models.DecimalField(max_digits=10, decimal_places=2)
description = models.TextField(blank=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
ordering = ['price']
verbose_name = 'Товар'
verbose_name_plural = 'Товары'
def __str__(self):
return self.name
После этого достаточно выполнить python manage.py makemigrations && python manage.py migrate.
2. Промт для создания ViewSet с фильтрацией
REST API — основа современных Django-проектов. Вместо того чтобы писать вручную каждый ViewSet, используй такой шаблон:
«Создай ModelViewSet для модели [имя модели] с использованием Django REST Framework. Добавь фильтрацию по полям [поля] через django-filter, поиск по [поля], сортировку по умолчанию по [поле]. Включи permission_classes = [IsAuthenticated]. Используй Python 3.12, Django 5.1, DRF 3.15.»
Пример:
Для модели Order (заказ) я попросил ViewSet с фильтром по статусу и дате, поиском по номеру заказа, сортировкой по дате создания. AI сгенерировал:
from rest_framework import viewsets, filters
from django_filters.rest_framework import DjangoFilterBackend
from .models import Order
from .serializers import OrderSerializer
class OrderViewSet(viewsets.ModelViewSet):
queryset = Order.objects.all()
serializer_class = OrderSerializer
permission_classes = [IsAuthenticated]
filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter]
filterset_fields = ['status', 'created_at']
search_fields = ['order_number']
ordering_fields = ['created_at', 'total']
ordering = ['-created_at']
Осталось только подключить в urls.py через router.register('orders', OrderViewSet).
3. Промт для написания сериализаторов с вложенными данными
Сериализаторы — частая точка ошибок, особенно при работе с вложенными объектами. Промт:
«Напиши сериализатор для модели [модель] с вложенными сериализаторами для связанных моделей [связи]. Используй ModelSerializer. Для поля [поле] добавь валидацию: [условие]. Включи метод create, который создаёт связанные объекты.»
Пример:
Для модели Purchase (покупка) с вложенными элементами (PurchaseItem) я попросил сериализатор, который при создании заказа автоматически создаёт элементы. AI вернул:
class PurchaseItemSerializer(serializers.ModelSerializer):
class Meta:
model = PurchaseItem
fields = ['product', 'quantity', 'price']
class PurchaseSerializer(serializers.ModelSerializer):
items = PurchaseItemSerializer(many=True)
class Meta:
model = Purchase
fields = ['id', 'user', 'created_at', 'items', 'total']
def create(self, validated_data):
items_data = validated_data.pop('items')
purchase = Purchase.objects.create(**validated_data)
for item_data in items_data:
PurchaseItem.objects.create(purchase=purchase, **item_data)
return purchase
4. Промт для кастомного действия в админке
Часто нужно добавить в админку кнопку «Экспорт в CSV» или «Отправить уведомление». Промт:
«Добавь кастомное admin action для модели [модель], которое [описание действия]. Используй actions в ModelAdmin. Обработай ошибки и покажи сообщение пользователю через messages. Для Django 5.1.»
Пример:
Я попросил action, который помечает выбранные заказы как «Отгружено» и отправляет уведомление. AI сгенерировал:
from django.contrib import admin, messages
from .models import Order
def mark_as_shipped(modeladmin, request, queryset):
updated = queryset.update(status='shipped')
messages.success(request, f'{updated} заказов отмечено как отгруженные.')
mark_as_shipped.short_description = 'Отметить как отгруженные'
class OrderAdmin(admin.ModelAdmin):
list_display = ['order_number', 'status', 'created_at']
actions = [mark_as_shipped]
5. Промт для написания тестов (pytest + factory_boy)
Тесты — must-have для любого продакшена. Промт:
«Напиши тесты для модели [модель] и ViewSet [ViewSet] с использованием pytest и factory_boy. Создай фабрику для модели. Проверь создание, чтение, обновление, удаление (CRUD). Используй pytest-django. Код должен быть готов к запуску.»
Пример:
Для модели Order я попросил тесты с factory_boy. AI создал фабрику и тесты с @pytest.mark.django_db, которые проверяют, что заказ создаётся с правильными полями.
import pytest
from .models import Order
from .factories import OrderFactory
@pytest.mark.django_db
def test_order_creation():
order = OrderFactory()
assert order.status == 'pending'
assert order.total > 0
@pytest.mark.django_db
def test_order_list_api(client):
OrderFactory.create_batch(5)
response = client.get('/api/orders/')
assert response.status_code == 200
assert len(response.data) == 5
6. Промт для настройки Celery + Redis для фоновых задач
Фоновые задачи — хлеб бэкендера. Промт:
«Напиши настройку Celery для Django с брокером Redis. Создай файл celery.py с декоратором @shared_task. Пример задачи: отправка email после создания заказа. Используй Python 3.12, Django 5.1, Celery 5.4, Redis 7.4.»
Пример:
Я попросил настроить Celery для отправки письма при создании заказа. AI сгенерировал:
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
app = Celery('myproject')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
И задачу в tasks.py:
from celery import shared_task
from django.core.mail import send_mail
@shared_task
def send_order_confirmation(order_id):
order = Order.objects.get(id=order_id)
send_mail(
'Заказ оформлен',
f'Ваш заказ №{order.order_number} принят.',
'noreply@example.com',
[order.user.email],
)
7. Промт для рефакторинга сложного запроса
Когда ORM-запрос тормозит, AI помогает оптимизировать. Промт:
«Оптимизируй следующий Django ORM-запрос: [вставь код]. Используй select_related, prefetch_related, annotate, values_list. Объясни, почему твой вариант быстрее. Для Django 5.1, PostgreSQL.»
Пример:
Я скормил запрос, который выбирал заказы с товарами без prefetch_related. AI предложил:
# Было (N+1 проблема)
orders = Order.objects.all()
for order in orders:
items = order.items.all() # каждый раз запрос
# Стало
orders = Order.objects.prefetch_related('items').all()
for order in orders:
items = order.items.all() # один запрос на все
Объяснение: prefetch_related выполняет один дополнительный запрос вместо N, что при 100 заказах уменьшает число запросов со 101 до 2.
Заключение
Эти 7 промтов покрывают 80% рутинных задач Django-разработчика: от создания моделей до оптимизации запросов. Главное — всегда указывать версии библиотек (Django 5.1, DRF 3.15, Python 3.12) и чётко описывать требования. AI не заменяет понимания кода, но освобождает время для архитектурных решений.
Попробуй любой промт из списка в своём проекте — и оцени, насколько быстрее пойдёт работа. А если хочешь системно прокачать навыки работы с Django и AI-инструментами — загляни в наш блог: там много практических материалов по автоматизации бэкенда.
Комментарии