推荐答案
在 Django 中,常用的模型字段类型包括:
- CharField: 用于存储较短的字符串,如用户名、标题等。
- TextField: 用于存储较长的文本,如文章内容、描述等。
- IntegerField: 用于存储整数。
- FloatField: 用于存储浮点数。
- BooleanField: 用于存储布尔值(True/False)。
- DateField: 用于存储日期。
- DateTimeField: 用于存储日期和时间。
- EmailField: 用于存储电子邮件地址。
- URLField: 用于存储 URL。
- FileField: 用于上传文件。
- ImageField: 用于上传图片。
- ForeignKey: 用于定义多对一关系。
- ManyToManyField: 用于定义多对多关系。
- OneToOneField: 用于定义一对一关系。
- DecimalField: 用于存储固定精度的十进制数。
- SlugField: 用于存储 URL 友好的短标签。
- UUIDField: 用于存储通用唯一标识符(UUID)。
- DurationField: 用于存储时间间隔。
本题详细解读
CharField
CharField 是 Django 中最常用的字段类型之一,用于存储较短的字符串。它有一个必需的参数 max_length,用于指定字段的最大长度。
class UserProfile(models.Model):
username = models.CharField(max_length=100)TextField
TextField 用于存储较长的文本内容,通常用于存储文章、描述等。与 CharField 不同,TextField 不需要指定最大长度。
class Article(models.Model):
content = models.TextField()IntegerField
IntegerField 用于存储整数。它可以存储正数、负数和零。
class Product(models.Model):
quantity = models.IntegerField()FloatField
FloatField 用于存储浮点数。与 IntegerField 不同,它可以存储小数。
class Product(models.Model):
price = models.FloatField()BooleanField
BooleanField 用于存储布尔值(True/False)。它通常用于表示开关状态或是否完成等。
class Task(models.Model):
is_completed = models.BooleanField(default=False)DateField 和 DateTimeField
DateField 用于存储日期,而 DateTimeField 用于存储日期和时间。它们通常用于记录创建时间、更新时间等。
class Event(models.Model):
start_date = models.DateField()
created_at = models.DateTimeField(auto_now_add=True)EmailField 和 URLField
EmailField 用于存储电子邮件地址,URLField 用于存储 URL。它们会自动验证输入是否符合电子邮件或 URL 的格式。
class Contact(models.Model):
email = models.EmailField()
website = models.URLField()FileField 和 ImageField
FileField 用于上传文件,ImageField 用于上传图片。ImageField 实际上是 FileField 的子类,专门用于处理图片。
class Document(models.Model):
file = models.FileField(upload_to='documents/')
image = models.ImageField(upload_to='images/')ForeignKey, ManyToManyField, 和 OneToOneField
这些字段用于定义模型之间的关系。ForeignKey 用于定义多对一关系,ManyToManyField 用于定义多对多关系,OneToOneField 用于定义一对一关系。
// www.javascriptcn.com code example
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
class Tag(models.Model):
name = models.CharField(max_length=100)
books = models.ManyToManyField(Book)
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)DecimalField
DecimalField 用于存储固定精度的十进制数。它有两个必需的参数:max_digits 和 decimal_places,分别表示数字的最大位数和小数位数。
class Product(models.Model):
price = models.DecimalField(max_digits=10, decimal_places=2)SlugField
SlugField 用于存储 URL 友好的短标签。它通常用于生成 SEO 友好的 URL。
class Article(models.Model):
title = models.CharField(max_length=100)
slug = models.SlugField(unique=True)UUIDField
UUIDField 用于存储通用唯一标识符(UUID)。它通常用于生成唯一的标识符。
class Product(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)DurationField
DurationField 用于存储时间间隔。它通常用于表示持续时间,如任务的持续时间。
class Task(models.Model):
duration = models.DurationField()