Skip to content

Instantly share code, notes, and snippets.

@sunmeat
Last active May 20, 2026 14:42
Show Gist options
  • Select an option

  • Save sunmeat/b9f3beb78cb80b720c2c1806bab7fa77 to your computer and use it in GitHub Desktop.

Select an option

Save sunmeat/b9f3beb78cb80b720c2c1806bab7fa77 to your computer and use it in GitHub Desktop.
Django Shell
.\env\Scripts\activate
pip install mssql-django
========================================================================================================
settings.py:
...
DATABASES = {
'default': {
'ENGINE': 'mssql',
'NAME': 'test',
'HOST': 'localhost',
'OPTIONS': {
'driver': 'ODBC Driver 18 for SQL Server',
'trusted_connection': 'yes',
'extra_params': 'TrustServerCertificate=yes;',
},
}}
...
========================================================================================================
models.py:
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=255)
birth_year = models.IntegerField()
rating = models.FloatField()
def __str__(self):
return self.name
class Book(models.Model):
title = models.CharField(max_length=255)
author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='books')
pages = models.IntegerField()
price = models.DecimalField(max_digits=8, decimal_places=2)
published_year = models.IntegerField()
stock = models.IntegerField()
def __str__(self):
return self.title
========================================================================================================
python manage.py makemigrations
python manage.py migrate
========================================================================================================
python manage.py shell (набрати цю команду в Developer PowerShell)
from django.apps import apps
apps.get_models()
from app.models import Author, Book
# ── ДОДАВАННЯ ─────────────────────────────────────────────────────────────────
author = Author.objects.create(
name='Шевченко',
birth_year=1814,
rating=9.5
)
book = Book.objects.create(
title='Кобзар',
author=author,
pages=325,
price=150.00,
published_year=1840,
stock=10
)
# ── ПЕРЕГЛЯД ──────────────────────────────────────────────────────────────────
Author.objects.all() # всі автори
Author.objects.values() # як словники
Author.objects.filter(rating__gte=7) # з рейтингом 7+
Author.objects.get(name='Шевченко') # один конкретний (кидає виняток якщо не знайдено)
Book.objects.all()
Book.objects.select_related('author').all() # з підтягуванням автора (JOIN, без N+1)
Book.objects.filter(author__name='Шевченко') # книги конкретного автора
# ── ОНОВЛЕННЯ ─────────────────────────────────────────────────────────────────
# один запис
author = Author.objects.get(name='Шевченко')
author.rating = 10.0
author.save()
# або одразу без fetch (один SQL UPDATE)
Author.objects.filter(name='Шевченко').update(rating=10.0)
# ── ВИДАЛЕННЯ ─────────────────────────────────────────────────────────────────
# один запис
author = Author.objects.get(name='Шевченко')
author.delete() # видалить і всі його книги (CASCADE)
# або одразу
Author.objects.filter(birth_year__lt=1800).delete()
from django.core.management.base import BaseCommand
from django.apps import apps
from app.models import Author, Book
class Command(BaseCommand):
help = 'Наповнює базу даних початковими авторами та книгами'
def handle(self, *args, **options):
self.stdout.write(self.style.SUCCESS('Ласкаво просимо в кастомний шелл!'))
# ініціалізація моделей (за потреби)
apps.get_models()
# створення першого автора та його книги
author1 = Author.objects.create(
name='Тарас Григорович Шевченко',
birth_year=1814,
rating=9.5
)
Book.objects.create(
title='Кобзар',
author=author1,
pages=325,
price=150.00,
published_year=1840,
stock=10
)
# створення другого автора та його книги
author2 = Author.objects.create(
name='Леся Українка',
birth_year=1871,
rating=9.6
)
Book.objects.create(
title='Лісова пісня',
author=author2,
pages=123,
price=250.00,
published_year=1912,
stock=20
)
self.stdout.write(self.style.SUCCESS('\nАвтори та книги створені успішно!\n'))
# вивід результатів у консоль
print('Всі автори:')
print(Author.objects.all())
print('\nАвтори як словники:')
print(list(Author.objects.values()))
print('\nВсі книжки:')
print(Book.objects.all())
print('\nВсі книжки як словники:')
print(list(Book.objects.values()))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment