字符串类型

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。

类型

大小

用途

CHAR

0-255字节

定长字符串

VARCHAR

0-65535 字节

变长字符串

TINYBLOB

0-255字节

不超过 255 个字符的二进制字符串

TINYTEXT

0-255字节

短文本字符串

BLOB

0-65 535字节

二进制形式的长文本数据

TEXT

0-65 535字节

长文本数据

MEDIUMBLOB

0-16 777 215字节

二进制形式的中等长度文本数据

MEDIUMTEXT

0-16 777 215字节

中等长度文本数据

LONGBLOB

0-4 294 967 295字节

二进制形式的极大文本数据

LONGTEXT

0-4 294 967 295字节

极大文本数据

 

 

CharField

  class CharField(max_length=None[, **options])

它是一个字符串字段,对小字符串和大字符串都适用。

对于更大的文本,应该使用TextField 。

默认的form widget是TextInput。

CharField 有一个必须传入的参数:max_length,字段的最大字符数。它作用于数据库层级和 Django 的数据验证层级。

TextField

 class TextField([**options])

大文本字段。默认的form widget是Textarea。

DateField

  class DateField([auto_now=False, auto_now_add=False, **options])

该字段利用 Python 的 datetime.date 实例来表示日期。下面是它额外的可选参数:

DateField.auto_now:每一次保存对象时,Django 都会自动将该字段的值设置为当前时间。一般用来表示 "最后修改" 时间。要注意使用的是当前日期,而并非默认值,所以

不能通过重写默认值的办法来改变保存时间。

DateField.auto_now_add:在第一次创建对象时,Django 自动将该字段的值设置为当前时间,一般用来表示对象创建时间。它使用的同样是当前日期,而非默认值。

默认的form widget是TextInput。

Note:当auto_now或者auto_now_add设置为True时,字段会有editable=True和blank=True的设定。

DateTimeField

  class DateTimeField([auto_now=False, auto_now_add=False, **options])

该字段利用 datetime.datetime 实例表示日期和时间。该字段所按受的参数和 DateField 一样。

默认的form widget是TextInput。Django 的admin使用两个带有 JavaScript 快捷选项TextInput分别表示日期和时间。

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

#板块
class Board(models.Model):
name=models.CharField(max_length=30,unique=True) #板块名称 unique 设置为True,此字段在数据库中必须是唯一的
description=models.CharField(max_length=100) #板块描述


#话题
class Topic(models.Model):
subject =models.CharField(max_length=255)
last_updated=models.DateTimeField(auto_now_add=True)
board=models.ForeignKey(Board,related_name='topics')
starter=models.ForeignKey(User,related_name='topics')

#帖子
class Post(models.Model):
message=models.TextField(max_length=4000)
topic=models.ForeignKey(Topic,related_name='posts')
created_at=models.DateTimeField(auto_now_add=True) # auto_now_add 设置 为 True 。这将告诉Django创建 Post 对象时为当前⽇期和时间。
updated_at=models.DateTimeField(null=True)
created_by=models.ForeignKey(User,related_name='posts') #(译注:外键关联)
updated_by=models.ForeignKey(User,null=True,related_name='+')

 

模型之间的关系使⽤ ForeignKey 字段。

它将在模型之间创建⼀个连接,并 在数据库级别创建适当的关系(译注:外键关联)。该 ForeignKey 字段需 要⼀个位置参数 related_name ,⽤于引⽤它关联的模型。(译注:例如 created_by 是外键字段,关联的User模型,表明这个帖⼦是谁创建的, related_name=posts 表示在 User 那边可以使⽤ user.posts 来查看这个⽤户 创建了哪些帖⼦)