MST

星途 面试题库

面试题:Python使用Django框架实现博客系统中模型设计相关问题

在使用Django框架实现博客系统时,假设博客文章需要关联作者、发布时间、标题、正文以及分类等信息,请用Python代码定义相应的Django模型类,并简要说明每个字段类型及可能用到的参数。
46.9万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
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
  1. BlogCategory模型类
    • name字段:类型为CharField,用于存储博客文章分类的名称,max_length参数设置为100,表示分类名称最大长度为100个字符。
  2. BlogPost模型类
    • author字段:类型为ForeignKey,关联User模型(假设使用Django内置用户模型作为作者),on_delete=models.CASCADE表示当作者被删除时,该作者发布的所有博客文章也会被删除。
    • publish_time字段:类型为DateTimeFieldauto_now_add=True表示在文章创建时,自动将当前日期和时间设置为发布时间。
    • title字段:类型为CharField,用于存储文章标题,max_length参数设置为200,表示标题最大长度为200个字符。
    • content字段:类型为TextField,用于存储文章的正文内容,适用于存储大量文本。
    • category字段:类型为ForeignKey,关联BlogCategory模型,on_delete=models.SET_NULL表示当分类被删除时,文章的分类会被设置为nullnull=True允许该字段为空。