django_models.py
delete CASCADE
- Address 모델은 User모델을 참조하며 User모델이 지워지면 그 Address모델도 지워진다.
class User(models.Model):
email = models.CharField(max_length=45)
password = models.ChatField(max_length=200)
class Address(models.Model):
user = models.Foreignkey(User, on_delete=models.CASCADE)
django str 메서드
class Menu(models.Model):
name = models.CharField(max_length=45)
def __str__(self):
return self.name
str() 메서드는 메뉴 클래스의 객체의 문자열 표현을 리턴한다.
default 값은 모델명 object 이다.
디폴트인 경우 객체를 알아보기 어려우므로 정의하는것이 좋다
many-to-many relationships
- 중간 필드 설정시 자동으로 설정 진행
- 직접 설정 원할시 through을 활용하여 중간 클래스 설정
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=128)
def __str__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
class Membership(models.Model):
person = models.ForeignKey(Person, on_delete=modles.CASCADE)
group = mddels.ForeignKey(Group, on_delete=models.CASCADE)
Meta options
모델 클래스 내부에 Meta라는 이름의 클래스를 선언하여 모델에 메타 데이터를 추가
class User(models.Model):
number = models.IntegerField()
class Meta:
db_table = 'users'
# 데이터베이스 테이블의 이름을 users로 지정
related_name
역참조 경우 기존 속성으로 객체 호출 불가
호출 하기 위해
1. [classname]_set 속성 사용
2. related_name 사용
class User(models.Model):
name = models.CharField(max_length=45)
job = models.ForeignKey('Occupation', on_delete = models.CASCADE)
class Occupation(models.Model):
name = models.CharField(max_length=45)
Author And Source
이 문제에 관하여(django_models.py), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@donq/djangomodels.py저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)