下面是关于"Django ORM常用字段与不常用字段汇总"的详细攻略。
什么是ORM
ORM
的全称是Object-Relational Mapping
,即对象关系映射,是一种将对象与关系数据库映射的技术。通常情况下,一个类对应于关系数据库中的一个表,一个对象对应于其中的一条记录(一行),一些对象可以通过它们的属性直接引用其他对象,这样就允许我们在程序中使用对象来操作数据库,而不用直接去写SQL。
Django是一个非常受欢迎的Web框架,也同时自带了ORM,即Django ORM。在使用Django ORM进行数据库操作的时候,需要定义相关模型的字段,下面会详细介绍针对这些字段的使用。
常用字段
CharField
CharField
用于存储文本字符串类型的数据,支持的参数包括:
max_length
:最大长度,默认255。
示例:
from django.db import models
class User(models.Model):
name = models.CharField(max_length=20)
email = models.CharField(max_length=50, unique=True)
password = models.CharField(max_length=50)
以上示例中定义了User
模型,包含了name
、email
和password
三个字段,其中name
和password
的最大长度都为20,email
的最大长度为50,并且需要唯一不重复。
IntegerField
IntegerField
用于存储整数类型的数据,支持的参数包括:
default
:默认值。null
:值是否可以为NULL,默认为False。blank
:是否可以为空,默认为False。verbose_name
:字段的人类可读名称,默认是属性名字本身,可通过该参数修改。
示例:
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=50)
views = models.IntegerField(default=0)
likes = models.IntegerField(default=0)
以上示例中定义了Article
模型,包含了title
、views
和likes
三个字段,其中views
和likes
都是整数类型,且默认值都为0。
TextField
TextField
用于存储文本字符串类型的数据,支持的参数与CharField
相同,但是没有max_length
参数限制。如果存储长度比较长的文本数据,可以考虑使用该字段。
示例:
from django.db import models
class Blog(models.Model):
title = models.CharField(max_length=50)
content = models.TextField()
以上示例中定义了Blog
模型,包含了title
和content
两个字段,其中content
字段存储整篇博客的内容,长度较大。
DateField
DateField
用于存储日期类型的数据,支持的参数包括:
auto_now
:每次保存对象时自动将该字段设为当前时间。auto_now_add
:当对象被创建时自动将该字段设为当前时间。
示例:
from django.db import models
class Event(models.Model):
title = models.CharField(max_length=50)
date = models.DateField(auto_now_add=True)
以上示例中定义了Event
模型,包含了title
和date
两个字段,其中date
表示事件发生日期,当该事件被创建时,该字段就会自动设为当前日期。
DateTimeField
DateTimeField
用于存储日期时间类型的数据,支持的参数与DateField
相同。
示例:
from django.db import models
class Comment(models.Model):
article = models.ForeignKey(Article, on_delete=models.CASCADE)
text = models.CharField(max_length=200)
pub_date = models.DateTimeField(auto_now_add=True)
以上示例中定义了Comment
模型,包含了article
、text
和pub_date
三个字段,其中pub_date
表示评论的发表时间,当评论被创建时,该字段就会自动设为当前日期时间。
不常用字段
EmailField
EmailField
用于存储电子邮件地址类型的数据,它可以用来验证输入的地址是否符合电子邮件地址的格式要求,支持的参数与CharField
相同。
示例:
from django.db import models
class Newsletter(models.Model):
email = models.EmailField()
以上示例中定义了Newsletter
模型,包含了email
字段,该字段用于存储电子邮件地址,且需要符合电子邮件地址的格式要求。
BooleanField
BooleanField
用于存储布尔类型的数据,只有两种取值:True
和False
,支持的参数包括:
default
:默认值。null
:值是否可以为NULL,默认为False。blank
:是否可以为空,默认为False。verbose_name
:字段的人类可读名称,默认是属性名字本身,可通过该参数修改。
示例:
from django.db import models
class Announcement(models.Model):
title = models.CharField(max_length=50)
is_active = models.BooleanField(default=False)
以上示例中定义了Announcement
模型,包含了title
和is_active
两个字段,其中is_active
表示该公告是否当前处于激活状态,该字段默认取值为False。
总结
以上是关于Django ORM常用字段与不常用字段的汇总,不同字段支持的参数略有不同,可以根据实际需要进行选择。在使用Django ORM进行数据库操作时,需要定义相关模型的字段,以达到程序与数据库交互的目的。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django ORM 常用字段与不常用字段汇总 - Python技术站