7 промтов для Django: от моделей до REST API — ускоряем бэкенд-разработку

Введение

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-инструментами — загляни в наш блог: там много практических материалов по автоматизации бэкенда.

← Все статьи

Комментарии

Читайте также

Бесшовная интеграция промышленного IoT-шлюза с AI-агентом ASI Biont: автоматизация заводских конвейеров данных без кода

16 июля 2026

10 промтов для Kubernetes: манифесты, Helm и деплой, которые ускорят твою работу

16 июля 2026

10 промтов для машинного обучения: от Scikit-learn до XGBoost и CatBoost

16 июля 2026

Интеграция Ozon с ИИ-агентом: Автоматизируйте операции продавца без единой строки кода

16 июля 2026

15 промтов для Low-Code / No-Code: Airtable, Bubble, Retool — как ускорить разработку в 2026 году

16 июля 2026

AI-агент управляет 3D-принтером: интеграция Marlin и Klipper с ASI Biont через COM-порт и SSH

16 июля 2026

AI-инженерия в промышленности и робототехнике: как стать востребованным специалистом в 2026 году

16 июля 2026

Data Science для бизнеса: как A/B тесты и прогнозные модели помогают увеличить ROI — обзор курса на asibiont.com

16 июля 2026

LLM Networking с MikroTik: Как Vibe Coding меняет сетевое администрирование в 2026 году

15 июля 2026