django의 모델 클래스 생성
5928 단어 django
이어 먼저'도서-영웅'관리를 예로 들어 시연한다.
1 정의
models에서 응용 booktest를 만듭니다.py 파일에서 모델 클래스를 정의합니다.
from django.db import models
# BookInfo
class BookInfo(models.Model):
btitle = models.CharField(max_length=20, verbose_name=' ')
bpub_date = models.DateField(verbose_name=' ')
bread = models.IntegerField(default=0, verbose_name=' ')
bcomment = models.IntegerField(default=0, verbose_name=' ')
is_delete = models.BooleanField(default=False, verbose_name=' ')
class Meta:
db_table = 'tb_books' #
verbose_name = ' ' # admin
verbose_name_plural = verbose_name #
def __str__(self):
""" """
return self.btitle
# HeroInfo
class HeroInfo(models.Model):
GENDER_CHOICES = (
(0, 'male'),
(1, 'female')
)
hname = models.CharField(max_length=20, verbose_name=' ')
hgender = models.SmallIntegerField(choices=GENDER_CHOICES, default=0, verbose_name=' ')
hcomment = models.CharField(max_length=200, null=True, verbose_name=' ')
hbook = models.ForeignKey(BookInfo, on_delete=models.CASCADE, verbose_name=' ') #
is_delete = models.BooleanField(default=False, verbose_name=' ')
class Meta:
db_table = 'tb_heros'
verbose_name = ' '
verbose_name_plural = verbose_name
def __str__(self):
return self.hname
1) 데이터베이스 테이블 이름
모델 클래스에 테이블 이름이 지정되지 않은 경우 Django는 기본적으로 소문자 app 응용 프로그램 이름소문자 모델 클래스는 데이터베이스 테이블 이름입니다.
dbtable는 데이터베이스 테이블 이름을 가리킨다.
2) 주 키 정보
django는 테이블에 자동으로 증가하는 키열을 만들 것입니다. 모델마다 하나의 키열만 있을 수 있습니다. 옵션을 사용하여 특정한 속성을 키열로 설정하면 django는 자동으로 증가하는 키열을 만들지 않습니다.
기본적으로 생성된 메인 키열 속성은 id입니다. pk로 대체할 수 있습니다. pk는 모두primary 키입니다.
3) 속성 이름 지정 제한
=models. ( )
타입
설명
AutoField
자동으로 증가하는 IntegerField, 보통 지정하지 않아도 되며, 지정하지 않으면 Django는 자동으로 속성 이름이 id인 자동 증가 속성을 생성합니다
BooleanField
부울 필드(값은 True 또는 False)
NullBooleanField
Null, True, False 세 가지 값 지원
CharField
문자열, 매개 변수 maxlength는 최대 문자 수를 표시합니다
TextField
일반적으로 4000자 이상
IntegerField
정수
DecimalField
십진 부동 소수점 수, 매개 변수 maxdigits는 총 자릿수, decimal 매개변수를 나타냅니다.places는 소수점 자릿수를 나타낸다
FloatField
부동 소수점 수
DateField
날짜, 매개변수 autonow는 객체를 저장할 때마다 이 필드를 현재 시간으로 자동으로 설정합니다.'마지막 수정'의 시간 스탬프에 사용됩니다. 이 필드는 항상 현재 날짜를 사용하고 기본값은false입니다.매개 변수 autonow_add는 객체가 처음 작성될 때 현재 시간을 자동으로 설정하고 작성할 때 사용되는 타임 스탬프를 나타냅니다. 이 스탬프는 항상 현재 날짜를 사용하며 기본값은False입니다.매개 변수 autonow_add 및 autonow는 서로 배척, 조합 오류 발생
TimeField
시간, 매개 변수는 DateField와 같습니다.
DateTimeField
날짜 시간, 매개 변수는 DateField와 같습니다.
FileField
파일 업로드 필드
ImageField
FileField 에 상속되어 업로드된 내용을 검사하여 올바른 그림인지 확인
5) 옵션
옵션
설명
null
True인 경우 허용이 비어 있음을 나타내며 기본값은 False입니다.
blank
True인 경우 필드는 공백으로 허용되며 기본값은 False입니다.
db_column
필드의 이름입니다. 지정하지 않으면 속성의 이름을 사용합니다.
db_index
값이 True이면 이 필드에 대한 색인이 테이블에 작성됩니다. 기본값은 False입니다.
default
묵인
primary_key
True인 경우 이 필드는 모델의 기본 키 필드가 되고 기본값은 False이며 일반적으로 AutoField 옵션으로 사용됩니다.
unique
True인 경우 이 필드는 테이블에 고유한 값이 있어야 합니다. 기본값은 False입니다.
null은 데이터베이스 범주 개념이고 blank는 폼 검증 범주이다
6) 외부 키
외부 키를 설정할 때 on 을 통과해야 합니다delete 옵션은 메인 테이블에서 데이터를 삭제할 때 외부 키 인용 테이블 데이터를 어떻게 처리하는지 알려줍니다.django.db.models에는 다음과 같은 옵션 상수가 포함되어 있습니다.
from django.conf import settings
from django.contrib.auth import get_user_model
from django.db import models
def get_sentinel_user():
return get_user_model().objects.get_or_create(username='deleted')[0]
class MyModel(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.SET(get_sentinel_user),
)
2 마이그레이션
모델 클래스를 데이터베이스에 동기화합니다.
1) 마이그레이션 파일 생성
python manage.py makemigrations
2) 데이터베이스에 동기화
python manage.py migrate
3 테스트 데이터 추가
insert into tb_books(btitle,bpub_date,bread,bcomment,is_delete) values
(' ','1980-5-1',12,34,0),
(' ','1986-7-24',36,40,0),
(' ','1995-12-24',20,80,0),
(' ','1987-11-11',58,24,0);
insert into tb_heros(hname,hgender,hbook_id,hcomment,is_delete) values
(' ',1,1,' ',0),
(' ',0,1,' ',0),
(' ',1,1,' ',0),
(' ',1,1,' ',0),
(' ',0,1,' ',0),
(' ',1,2,' ',0),
(' ',1,2,' ',0),
(' ',1,2,' ',0),
(' ',0,2,' ',0),
(' ',1,3,' ',0),
(' ',0,3,' ',0),
(' ',1,3,' ',0),
(' ',0,3,' ',0),
(' ',1,4,' ',0),
(' ',0,4,' ',0),
(' ',0,4,' ',0),
(' ',0,4,' ',0);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.