https://docs.djangoproject.com/en/3.0/ref/models/fields/
CharField
等价于MySQL里面的varchar
class Port(models.Model):
STATUS = [
('0', '关闭'),
('1', '开放'),
('2', '不确定)'
]
status = models.CharField(max_length=1, choices=STATUS)
在此类型中,null=Ture与blank=Ture常配套使用,用来表示允许为空,为空时使用空字符串表示。
comment = models.CharField(max_length=125, null=True, blank=True)
数值类型
IntegerField
AutoField
application_id = AutoField(primary_key=True)
时间类型
DateField, DateTimeField
auto_now_add属性用来限定该字段的值无法再被修改。
auto_now属性表示记录在更新时,该时间字段会自动更新。
也可以使用default属性
default=datetime.date.today
default=datetime.datetime.now
default属性与auto_now_add、auto_now只能使用一个
DateFieldd类型只包含年、月、日。
create_time = DateField(auto_now_add=True)
DateTimeFIeld类型包含年、月、日、时、分、秒
update_time = DateTimeField(auto_now=True)
choices属性
可以使用get_XXX_display()方法来获取对应的显示值
ALIVE_STATUS = [
('0', '死亡'),
('1', '存活')
]
status = models.CharField(max_length=1, choices=ALIVE_STATUS, verbose_name='域名的存活状态,0:死亡,1:存活')
def __str__(self):
return f'{self.get_status_display()}'
在模板中也可以使用get_XXX_display展示对应的值
枚举类也可以使用简洁的方式来定义 choices
status = models.TextChoices('dead', 'live');
GenericIPAddressField
GenericIPAddressField对应的MySQL字段类型是char(39)