null 代表数据库中是否可以存null,True:可以接受null False:老娘(数据库)不接受null
blank 代表这个字段在创建时是否可接收空值 True:可接收空值 False:不可接收空值
由于charfield 和textfiedl这两个本文类字段的空值表现形式为 “” 空字符串,所以要存空值时不需要null=True,这样数据库里会有null 和“”两种空值,很混乱
blank默认字段为False null默认字段为False,即不管是python的model还是数据库都不接受空值,你必须给我传进来一个值,否则就报错
一般的
指定需要接收空值:null=True blank=True
charfield 和textfiedl这两个本文类字段接受空值:blank=True
choices 限制用户的输入
如果输入都为int型,这样限制:
class Card(models.Model):
class Suit(models.IntegerChoices):
DIAMOND = 1
SPADE = 2
HEART = 3
CLUB = 4
suit = models.IntegerField(choices=Suit.choices)
可以获取label value等
class Vehicle(models.TextChoices):
... CAR = 'C'
... TRUCK = 'T'
... JET_SKI = 'J'
...
Vehicle.JET_SKI.label
'Jet Ski'
也可以自动生成标签:
MedalType.choices
[('GOLD', 'Gold'), ('SILVER', 'Silver'), ('BRONZE', 'Bronze')]
Place = models.IntegerChoices('Place', 'FIRST SECOND THIRD')
Place.choices
[(1, 'First'), (2, 'Second'), (3, 'Third')]
db_column 字段对应的数据库字段名
db_index 索引(**)
default 默认值,可以是一个具体的值也可以是一个可调用函数名(创建时会自己调用)
validators 验证()输入字段
def validate_even(value):
if value % 2 != 0:
raise ValidationError(
_('%(value)s is not an even number'),
params={'value': value},
)
class MyModel(models.Model):
even_field = models.IntegerField(validators=[validate_even])