Конспект
10 марта 2023 г.

Django Database ORM Mastery

New Django Developer Django Induction Optional

mkdir project
cd project
python -m venv venv
pip install django
pip list
pip freeze > requirements.txt
pip install -r requirements.txt
django-admin startproject core .
python manage.py startapp newapp
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'newapp'
]
python manage.py runserver
python manage.py runserver 8080
RequestResponse Cycle
# newapp/views.py
from django.shortcuts import render

def home(request):
    return render(request, "index.html")

# core/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('newapp.urls'))
]

# newapp/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.home),
]
python manage.py migrate

Building Models

# models.py
from django.db import models

class Brand(models.Model):
    brand_id = models.BigAutoField(primary_key=True)
    name = models.CharField(max_length=50)

class Category(models.Model):
    name = models.CharField(max_length=50)

    class Meta:
        verbose_name_plural = "Categories"

class Product(models.Model):
    the_name = models.CharField("Product Name", max_length=100, default="no-name", help_text="This is the help text")
    age = models.IntegerField()
    is_active = models.BooleanField(default=True)
    # category = models.ForeignKey(Category, on_delete=models.CASCADE)
    category = models.ManyToManyField(Category)

    class Meta:
        ordering = ["age"]

    def __str__(self):
        return f"Product name: {self.name}"

class Stock(models.Model):
    units = models.BigIntegerField()
    product = models.OneToOneField(Product, on_delete=models.CASCADE)
Автор: Very Academy
Footer