[Django] ORM(4)

amudomolla·2022년 2월 24일
0

Django

목록 보기
5/10


1. HeidiSQL에 추가
Heidi에서 'sh'를 클릭한 다음 새로운 쿼리창을 열어서 그곳에 입력

DROP TABLE cart;
DROP TABLE cust;
DROP TABLE item;

CREATE TABLE cust(
   id CHAR(5),
   pwd VARCHAR(10) NOT NULL,
   name VARCHAR(10) NOT NULL
);
ALTER TABLE cust ADD PRIMARY KEY (id);
INSERT INTO cust VALUES('id01','pwd01','이말숙');
INSERT INTO cust VALUES('id02','pwd02','김말숙');
INSERT INTO cust VALUES('id03','pwd03','정말숙');
# ------------------------------------------

CREATE TABLE item(
   id INT,
   name VARCHAR(20) NOT NULL,
   price INT  NOT NULL,
   imgname VARCHAR(20),
   regdate DATE  NOT NULL
);
ALTER TABLE item ADD PRIMARY KEY (id);
ALTER TABLE item MODIFY id INT AUTO_INCREMENT;
ALTER TABLE item AUTO_INCREMENT = 1000;

INSERT INTO item (name,price,imgname,regdate) VALUES('pants1',10000,'pants1.jpg',CURRENT_DATE());
INSERT INTO item (name,price,imgname,regdate) VALUES('pants2',20000,'pants2.jpg',CURRENT_DATE());
INSERT INTO item (name,price,imgname,regdate) VALUES('pants3',30000,'pants3.jpg',CURRENT_DATE());
INSERT INTO item (name,price,imgname,regdate) VALUES('pants4',40000,'pants4.jpg',CURRENT_DATE());


CREATE TABLE cart(
	id INT,
	custid CHAR(5),
	itemid INT,
	num INT,
	regdate DATE
);

ALTER TABLE cart ADD PRIMARY KEY (id);
ALTER TABLE cart MODIFY id INT AUTO_INCREMENT;
ALTER TABLE cart AUTO_INCREMENT = 100;
ALTER TABLE cart ADD CONSTRAINT FOREIGN KEY (custid) REFERENCES cust(id);
ALTER TABLE cart ADD CONSTRAINT FOREIGN KEY (itemid) REFERENCES item(id);


INSERT INTO cart (custid, itemid,num,regdate) VALUES ('id01',1000,10,CURRENT_DATE());

오류가 날 수 있으니 DROP문들은 전부 주석처리하고 돌려보기!그러면 밑의 사진처럼 테이블이 생성된 것을 볼 수 있다.

2. 기존 테이블에 정보 조회

Django로 넘어와 Terminal에 입력하면

python manage.py inspectdb

테이블들을 Terminal에서 볼 수 있다.

3. a.py 파일 생성

python manage.py inspectdb > a.py

a.py라는 파일에 생성되면서 2번에서 조회된 내용이 들어간다.

4. a.py 파일에서 클래스 추출

1) web > models.py에 클래스 추가
📌 a.py 파일에서 Cart, Cust, Item 클래스 복사 -> models.py에 붙여넣기
📌 오류가 발생할 수 있으니 붙여넣기가 끝나면 a.py를 삭제

class Cust(models.Model):
    id = models.CharField(primary_key=True, max_length=5)
    pwd = models.CharField(max_length=10)
    name = models.CharField(max_length=10)

    class Meta:
        managed = False
        db_table = 'cust'

class Item(models.Model):
    name = models.CharField(max_length=20)
    price = models.IntegerField()
    imgname = models.CharField(max_length=20, blank=True, null=True)
    regdate = models.DateField(auto_now_add=True)

    class Meta:
        managed = False
        db_table = 'item'

class Cart(models.Model):
    custid = models.ForeignKey('Cust', models.DO_NOTHING, db_column='custid', blank=True, null=True)
    itemid = models.ForeignKey('Item', models.DO_NOTHING, db_column='itemid', blank=True, null=True)
    num = models.IntegerField(blank=True, null=True)
    regdate = models.DateField(auto_now_add=True)

    class Meta:
        managed = False
        db_table = 'cart’

2) web > admin.py에 추가
from django.contrib import admin
from web.models import Guest, Article, Cust, Item, Cart


class GuestAdmin(admin.ModelAdmin):
    list_display = ('id','title','content','regdate');  # 'id',title','content','regdate' 화면에 보이도록
admin.site.register(Guest,GuestAdmin);

class ArticleAdmin(admin.ModelAdmin):
    list_display = ('id','name','price','pub_date');
admin.site.register(Article,ArticleAdmin);

class CustAdmin(admin.ModelAdmin):
    list_display = ('id','name','pwd');
admin.site.register(Cust,CustAdmin);

class ItemAdmin(admin.ModelAdmin):
    list_display = ('id','name','price','imgname','regdate');
admin.site.register(Item,ItemAdmin);

class CartAdmin(admin.ModelAdmin):
    list_display = ('id','custid','itemid','num','regdate');
admin.site.register(Cart,CartAdmin);

5. django 관리자 페이지로 접속

python manage.py runserver 80 

📌 127.0.0.1/admin 접속

Cart, Cust, Item이 추가 된 것을 확인 가능

profile
👩‍💻 기록 및 복습을 위함

0개의 댓글