from django.db import models
from django.contrib.auth.models import User # 假设使用Django内置用户模型作为作者
class BlogCategory(models.Model):
name = models.CharField(max_length=100) # 分类名称,CharField用于存储短字符串,max_length指定最大长度
def __str__(self):
return self.name
class BlogPost(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE) # 关联作者,ForeignKey建立外键关联,on_delete指定删除作者时文章也删除
publish_time = models.DateTimeField(auto_now_add=True) # 发布时间,DateTimeField存储日期和时间,auto_now_add在创建时自动设置为当前时间
title = models.CharField(max_length=200) # 标题,CharField存储短字符串,max_length指定最大长度
content = models.TextField() # 正文,TextField用于存储长文本
category = models.ForeignKey(BlogCategory, on_delete=models.SET_NULL, null=True) # 关联分类,ForeignKey建立外键关联,on_delete设置分类删除时文章分类设为null
def __str__(self):
return self.title
BlogCategory
模型类:
name
字段:类型为CharField
,用于存储博客文章分类的名称,max_length
参数设置为100,表示分类名称最大长度为100个字符。
BlogPost
模型类:
author
字段:类型为ForeignKey
,关联User
模型(假设使用Django内置用户模型作为作者),on_delete=models.CASCADE
表示当作者被删除时,该作者发布的所有博客文章也会被删除。
publish_time
字段:类型为DateTimeField
,auto_now_add=True
表示在文章创建时,自动将当前日期和时间设置为发布时间。
title
字段:类型为CharField
,用于存储文章标题,max_length
参数设置为200,表示标题最大长度为200个字符。
content
字段:类型为TextField
,用于存储文章的正文内容,适用于存储大量文本。
category
字段:类型为ForeignKey
,关联BlogCategory
模型,on_delete=models.SET_NULL
表示当分类被删除时,文章的分类会被设置为null
,null=True
允许该字段为空。