django 4-4 ManyToMany모델 등록하기

Grace Goh·2022년 10월 12일
0

Django

목록 보기
21/32

restaurant/models.py

# restaurant/models.py
from django.db import models


# Create your models here.

class MyTopping(models.Model):
    class Meta:
        db_table = "my_topping"

    def __str__(self):
        return self.topping_name

    topping_name = models.CharField(max_length=100)


class MyPizza(models.Model):
    class Meta:
        db_table = "my_pizza"

    def __str__(self):
        return self.pizza_name

    pizza_name = models.CharField(max_length=100)
    pizza_topping = models.ManyToManyField(MyTopping)

모델을 만든 후에는

모델을 DB에 적용하기

python manage.py makemigrations
python manage.py migrate

새로고침을 누르면 새 DB가 생성돼 있다.

이것을 편하게 보기 위해 admin 관리자 페이지에 추가한다.

restaurant/admin.py

from django.contrib import admin
from .models import MyTopping, MyPizza # 우리가 만든 모델을 불러온다.

# Register your models here.

admin.site.register(MyPizza)
admin.site.register(MyTopping)

위와 같이 admin 화면에 적용할 수 있다.

서버를 켜고 확인하기 전에 한 가지 더 확인해야 할 것은
우리가 사용자모델을 django model로 확장했기 때문에
superuser 관리자계정을 만들어야 한다.

관리자계정 들어갔더니 아래와 같이 토핑이 등록되지 않는 오류가 발생한다.

파이참에서 서버 종료한 후 DB 삭제한다.
db.sqlite3 오른쪽 클릭 > delete

db를 새로 생성한다.
그 전에 각 파일에서 작업해야 할 것은
각 앱 tweet, user, restaurant의 migrations의 하위 폴더를 init.py 제외하고 삭제한다.

유저모델 테이블을 우리가 만든 모델로 바꾸면서 관리자 관련 정보들이 제대로 세팅되어 있지 않다.
그래서 한 번 DB를 지우고 실행해주려 한다.

▽ DB에서도 오른쪽 클릭하여 remove

다시 한 번 migrations, migrate, superuser
migrations, migrate를 하면 왼쪽에 DB(sqlite3)이 생긴다.
그것을 우측 DB창으로 드래그하면 DB 테이블을 확인할 수 있다.


Many to Many 모델

을 만들었다.

profile
Español, Inglés, Coreano y Python

0개의 댓글