1. 程式人生 > >ORM(四)字段參數

ORM(四)字段參數

創建 form lar cad 默認 pri 選擇框 turn max

null:如果null=True,則該字段在數據庫中的值可以為NULL,默認null=False。

blank:如果blank=True,前端form表單可以空,註意,這與NULL不同。NULL純粹與數據庫相關,而空值則與驗證相關。如果字段為blank=True,則表單驗證將允許輸入空值。如果字段為blank=False,則該字段必須填寫。

db_column:用於此字段的數據庫列的名稱。如果沒有給出,Django將使用字段的名稱。

db_index:如果db_index=True,則允許創建該字段為索引。

default:為字段設置默認值。

primary_key:primary_key=True將該字段設為主鍵。

unique:unique=True設置該字段值在表中是唯一的,不能重復。

unique_for_date:將該字段日期(DateField、DateTimeField)設置為唯一不能重復。

unique_for_year:將該字段年份(DateField、DateTimeField)設置為唯一不能重復。

unique_for_moth:將該字段月份(DateField、DateTimeField)設置為唯一不能重復。

choices:顯示選擇框的內容,如:sex = models.IntegerField(choices=[(0, ‘女‘),(1, ‘男‘),],default=1),如果我們使用"對象.sex"的方式將只能獲取0或者是1,而不能獲取男或者女。可以使用“對象.get_sex_display”的方式來獲取選項中的男或女。如下示例:

from django.db import models
class Person(models.Model):
    SHIRT_SIZES = (              # 定義choices的選項
        (S, Small),
        (M, Medium),
        (L, Large),
                     )
    name = models.CharField(max_length=60)
    shirt_size = models.CharField(max_length=1,choices=SHIRT_SIZES)

>>>from 項目_app.models import Person # 在終端中導入模塊 >>> p = Person(name="Fred Flintstone", shirt_size="L") >>> p.save() >>> p.shirt_size # 直接打印字段 L >>> p.get_shirt_size_display() # 使用對象.get_字段_display()的方式打印字段 Large

error_messages:自定義錯誤信息(字典類型),從而定制想要顯示的錯誤信息;字典健:null, blank, invalid, invalid_choice, unique, and unique_for_date

如:{‘null‘: "不能為空.", ‘invalid‘: ‘格式錯誤‘}

參考網址:https://docs.djangoproject.com/en/1.11/ref/models/fields/#field-options

ForeignKey(ForeignObject)

參數:ForeignObject(RelatedField)
to=表名, # 要進行關聯的表名
to_field=None, # 要關聯的表中的字段名稱
on_delete=None, # 當刪除關聯表中的數據時,當前表與其關聯的行的行為
  - 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 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),  # 調用函數get_sentinel_user()
    )

------------------------------------未完

ORM(四)字段參數