


I made a data table in MySQL database  by using migrate command after writing the classes on models.py, refering to the below ERD(Entity Relationship Diagram).



We should import data of model class.
from products.models import Menu, Categoty
1) Creating 음료 menu using create() method
>>> Menu.objects.create(name="음료")
2) Creating 상품 menu using save() method
>>> a3 = Menu(name="상품")
>>> a3.save()
3) Creating 음료 and 푸드 menu using bulk_create() method
>>> a1 = Menu(name="음료")
>>> a2 = Menu(name="푸드") 
>>> Menu.objects.bulk_create([a1, a2])
Menu table from MySQL database using SELECT command>>> SELECT * FROM menus;
4) Creating category data when Category table refers to Menu id
>>> a1 = Menu.objects.get(name="음료")
>>> Category.objects.create(name="콜드 브루 커피", menu=a1)
5)Checking id of 콜드브루커피 in Menu
>>> b1 = Category.objects.get(name="콜드 브루 커피")
>>> b1.menu.id
6) Creating 브레드 and 케이크 category under 푸드 Menu using bulk_create()
>>> a2 = Menu.objects.get(name="푸드")
>>> Category.objects.bulk_create([
			Category(name="브레드", menu=a2), 
			Category(name="케이크", menu=a2)
		])
1) Selecting 음료 menu using get() method and name field
>>> Menu.objects.get(name="음료")
2) Selecting 음료 menu using get() method and id field
>>> Menu.objects.get(id=1)
3) Getting all data from Category table using all() method
>>> Category.objects.all()
4) Getting only the data referring to the 음료 menu among the Category data using filter() method
>>> Category.objects.filter(menu_id=1)
OR
>>> Category.objects.filter(menu__name="음료")
5) Getting name data of all data refering to 푸드 menu using for loop
>>> for category in Category.objects.filter(menu__name="푸드"):
		    print(category.name)
6) Getting all categories refering to 음료 menu in the form of QuerySet
>>> a1 = Menu.objects.get(name="음료")
>>> a1.category_set.all()
7) Getting the number of categories refering to 음료 menu using count() method
>>> a1 = Menu.objects.get(name="음료")
>>> a1.category_set.count()
8) Getting Menu's name data to which 블렌디드 category refers
>>> c2 = Category.objects.get(name="블렌디드")
>>> c2.menu.name
DELETE FROM 테이블명 [WHERE 조건]; 
To delete the entire data from the table : 
DELETE FROM <table name>;
To delete partial data:
DELETE FROM <table name> WHERE id = 1;
To delete entire data from the table using truncate : TRUNCATE TABLE <테이블명>;
delete & truncate:
delete and truncate both delete data, leaving the table info as is.
The difference between delete and truncate is that delete have the space in the disc after deleting the data, while truncate makes it go back to the status that the table is just created. So after the truncate command, there's only column left. But truncate command executes a commit
automatically, so we can't recover the data.

I faced the below error message when migrating.

So I added null=True on the CharField as below and then the error was fixed. 


*But what makes me confused is, according to the Django documentation, we should avoid using Null on string-based fields.
INSERT INTO 테이블명 (컬럼1, 컬럼2,,,,)
VALUES
('값1','값2'),
('값1','값2'),
('값1','값2');
출처: https://private.tistory.com/63 [공부해서 남 주자]
models.py to DBmakemigrations : the process that creates the migration file(schematics) to apply the python code we wrote on models.py to the database.
migrate : To apply the migration file(schematics), created with makemigrations command, to the database.
QuerySet API reference
https://docs.djangoproject.com/en/3.0/ref/models/querysets/
Model field reference
https://docs.djangoproject.com/en/3.2/ref/models/fields/
Django 모델 ForeignKeyField on_delete 종류
https://vallhalla-edition.tistory.com/60
Many-to-one relationships
https://docs.djangoproject.com/en/3.1/topics/db/examples/many_to_one/
Django 개발 : URLconf - URL 정의
클래스, 객체, 인스턴스
https://gmlwjd9405.github.io/2018/09/17/class-object-instance.html