1. 程式人生 > >ORM欄位 ORM欄位引數 關係欄位引數

ORM欄位 ORM欄位引數 關係欄位引數

1.ORM欄位

  • AutoField

  • int自增列,必須填入引數 primary_key=True。當model中如果沒有自增列,則自動會建立一個列名為id的列。

    IntegerField

  • 一個整數型別,範圍在 -2147483648 to 2147483647。

    CharField

  • 字元型別,必須提供max_length引數, max_length表示字元長度

    DateField

    日期欄位,日期格式  YYYY-MM-DD,相當於Python中的datetime.date()例項。
  • DateTimeField

  • 日期時間欄位,格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相當於Python中的datetime.datetime()例項

2.ORM欄位引數

  • null

  • 用於表示某個欄位可以為空。

    unique

    如果設定為unique=True 則該欄位在此表中必須是唯一的 。
  • db_index

  • 如果db_index=True 則代表著為此欄位設定索引。

    default

    為該欄位設定預設值。
  • auto_now_add

  • 配置auto_now_add=True,建立資料記錄的時候會把當前時間新增到資料庫。

    auto_now

  配置上auto_now=True,每次更新資料記錄的時候會更新該欄位。

3.關係欄位引數

1)ForeignKey(外來鍵)

  • to 設定要關聯的表

  • to_field 設定要關聯的表的欄位(預設是id)

class Classes(models.Model):
    name = models.CharField(max_length=32)

class Student(models.Model):
    name = models.CharField(max_length=32)
    theclass = models.ForeignKey(to="Classes")
  • on_delete(級聯刪除) 當刪除關聯表中的資料時,當前表與其關聯的行的行為。

    models.CASCADE

    刪除關聯資料,與之關聯也刪除

  models.DO_NOTHING
  刪除關聯資料,引發錯誤IntegrityError

  models.PROTECT
  刪除關聯資料,引發錯誤ProtectedError

  models.SET_NULL
  刪除關聯資料,與之關聯的值設定為null(前提FK欄位需要設定為可空)

  models.SET_DEFAULT
  刪除關聯資料,與之關聯的值設定為預設值(前提FK欄位需要設定預設值)

  models.SET

  刪除關聯資料,
  a. 與之關聯的值設定為指定值,設定:models.SET(值)
  b. 與之關聯的值設定為可執行物件的返回值,設定:models.SET(可執行物件)

def func():
    return 10

class MyModel(models.Model):
    user = models.ForeignKey(
        to="User",
        to_field="id",
        on_delete=models.SET(func)
    )

2)OneToOneField

to

​ 設定要關聯的表。

to_field

​ 設定要關聯的欄位。

on_delete

​ 同ForeignKey欄位。

class Author(models.Model):
    name = models.CharField(max_length=32)
    info = models.OneToOneField(to='AuthorInfo')
    

class AuthorInfo(models.Model):
    phone = models.CharField(max_length=11)
    email = models.EmailField()

3)ManyToManyField

to

​ 設定要關聯的表