https://docs.djangoproject.com/en/3.0/ref/models/fields/

CharField

等价于MySQL里面的varchar

  1. class Port(models.Model):
  2. STATUS = [
  3. ('0', '关闭'),
  4. ('1', '开放'),
  5. ('2', '不确定)'
  6. ]
  7. status = models.CharField(max_length=1, choices=STATUS)

在此类型中,null=Ture与blank=Ture常配套使用,用来表示允许为空,为空时使用空字符串表示。

  1. comment = models.CharField(max_length=125, null=True, blank=True)

数值类型

IntegerField

AutoField

  1. 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类型只包含年、月、日。

  1. create_time = DateField(auto_now_add=True)

DateTimeFIeld类型包含年、月、日、时、分、秒

  1. update_time = DateTimeField(auto_now=True)

choices属性

可以使用get_XXX_display()方法来获取对应的显示值

  1. ALIVE_STATUS = [
  2. ('0', '死亡'),
  3. ('1', '存活')
  4. ]
  5. status = models.CharField(max_length=1, choices=ALIVE_STATUS, verbose_name='域名的存活状态,0:死亡,1:存活')
  6. def __str__(self):
  7. return f'{self.get_status_display()}'

在模板中也可以使用get_XXX_display展示对应的值

枚举类也可以使用简洁的方式来定义 choices

  1. status = models.TextChoices('dead', 'live');

GenericIPAddressField

GenericIPAddressField对应的MySQL字段类型是char(39)