Django模型基礎第三節:常用的模型字段類型以及表關係的實現

常用的字段類型映射關係:

int ---------------IntegetField
varchar------------------CharField
longtext------------TextField
date--------------DateField
datetime----------------DateTimeField

常用的字段類型:

  1. IntegerField : 整型,映射到數據庫中的int類型。
  2. CharField: 字符類型,映射到數據庫中的varchar類型,通過max_length指定最大長度。
  3. TextField: 文本類型,映射到數據庫中的text類型。
  4. BooleanField: 布爾類型,映射到數據庫中的tinyint類型,在使用的時候,傳遞True/False進去。如果要可以爲空,則用NullBooleanField。
  5. DateField: 日期類型,沒有時間。映射到數據庫中是date類型,
    在使用的時候,可以設置DateField.auto_now每次保存對象時,自動設置該字段爲當前時間。設置DateField.auto_now_add當對象第一次被創建時自動設置當前時間。
  6. DateTimeField: 日期時間類型。映射到數據庫中的是datetime類型,
    在使用的時候,傳遞datetime.datetime()進去。

Field的常用參數:

primary_key: 指定是否爲主鍵。
unique: 指定是否唯一。
null: 指定是否爲空,默認爲False。
blank: 等於True時form表單驗證時可以爲空,默認爲False。
default: 設置默認值。
DateField.auto_now: 每次修改都會將當前時間更新進去,只有調用,QuerySet.update方法將不會調用。這個參數只是Date和DateTime以及TimModel.save()方法纔會調用e類纔有的。
需要save方法儲存
DateField.auto_now_add: 第一次添加進去,都會將當前時間設置進去。以後修改,不會修改這個值

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

表關係的實現:

一對多------外鍵--------ForeignKeyField
一對一-----外鍵+唯一鍵--------OneToOneField
多對多--------關聯表:外鍵+聯合唯一------ManyToManyField

表關係圖:

在這裏插入圖片描述

表關係的例子:

學院信息表—一對多----學生信息表
學生信息表----一對一----學生詳細信息表
課程表----多對多----學生信息表

#學院表
class Department(models.Model):
    d_id = models.AutoField(primary_key=True)
    d_name = models.CharField(max_length=20)
    def __str__(self):
        return 'Department:d_id:%s, d_name:%s'%(self.d_id,self.d_name)


#學生表

class Student(models.Model):
    s_id =models.AutoField(primary_key=True)
    s_name = models.CharField(max_length=20)
    department = models.ForeignKey('Department',on_delete=models.CASCADE)
    course = models.ManyToManyField('Course')

    def __str__(self):
        return 'Student:s_id:%s, s_name:%s '%(self.s_id,self.s_name)
#學生課程表
class Course(models.Model):
    c_id = models.AutoField(primary_key=True)
    c_name = models.CharField(max_length=20)

    def __str__(self):
        return 'Course:c_id:%s, c_name:%s '%(self.c_id,self.c_name)

#學生詳情表
class Detail(models.Model):

    s_id = models.OneToOneField('Student',on_delete=models.CASCADE)
    age = models.IntegerField()
    gender = models.BooleanField(default=True)

    def __str__(self):
        return 'Detail:s_id:%s, age:%s, gender:%s '%(self.s_id,self.age,self.gender)

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章