name = models.CharField(max_length = 40)
review = models.TextField()
integer = models.IntegerField()
is_my_drink = models.BooleanField(default = False)
my_binary = models.BinaryField()
my_file = models.FileField(upload_to = 'uploads/')
image = models.URLField()
created_at = models.DateTimeField(auto_now_add=True)
DateTimeField Options
auto_now_add : model이 최초로 저장(insert)될시에 현재 날짜를 저장한다
auto_now : model이 수정(save)될 때마다 현재날짜로 갱신된다
image = models.URLField(null = True)
my_date = models.DateTimeField(blank = True)
blank와 null의 차이점
null : DB와 관련되어 있다. database column이 null 값을 허용하느냐 아니냐를 결정해준다.
blank : Form에 대한 유효성과 관련되어 있다. 즉, 반드시 입력해야하는지 아닌지를 결정해준다.
is_my_drink = models.BooleanField(default = False)
student_id = models.IntegerField(unique = True)
이 밖의 다른 Field Option들이 있지만 사용해보는대로 차근차근 정리할 예정이다.
스타벅스 DB Schema 모델링 과제에서 영양성분표에 소숫점이 있어 Float형을 사용했는데 나중에 알고보니 Float형은 정확한 수치를 저장하는것이 아닌 근사 데이터 형식을 저장한다는 사실을 알게되었다. Float Field를 사용하는 대신 Decimal Field를 사용하라는 피드백을 받았다.
DECIMAL(5,2) : 전체 5자리중에서 소숫점 2자리까지 확보되었다 라는 의미이다.
ex) 스타벅스 콜드 브루 몰트 나트륨(mg) 함량 표현하기
정확하게 표현해보자면 전체 4자리중 소숫점 1자리를 확보해야 한다.
DECIMAL(4,1)
하지만 유연한 소숫점 표현을 위해 나트륨 필드를 DECIMAL(10,2)정도로 할당해주는게 좋다.
Decimal field는 고정 소숫점을 가지는 decimal 필드이다. 정확한 숫자를 저장한다. 2개의 필수 option이 있다
ex) 소숫점 이하 3자리수의 숫자를 99개 까지 저장하기
나트륨 함량 : 20.142mg 표현하기
sodium_mg = models.DecimalField(max_digits = 5, decimal_places = 3)