Django - BBS 项目学习 - 表结构设计

本文详细介绍了Django中BBS项目的数据库结构设计,并重点讲解了如何进行数据库优化,包括admin后台显示优化和查询性能提升,旨在减少数据库压力,提高系统效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 一、数据库结构初步设计

 二、数据库优化

2-1 后台admin 数据库显示优化,Meta内verose相关

 2-2 admin后台数据库内容优化显示 -- __str__方法的使用

2-4 admin后台字段显示优化 - varbose_name

2-5 数据库查询优化,解决前台多次连表查询并使用方法对数据库造成的压力


 一、数据库结构初步设计

from django.db import models

# Create your models here.
from django.contrib.auth.models import AbstractUser

'''
bbs表结构总结:
    - DateTimeField - auto_now_add = True :当记录创建时自动添加当前时间
    - FileField - upload_to = "":上传文件的保存路径;默认使用头像文件;default:默认文件
    - TextField : 大文本字段,可存储大量数据内容
    - ForeignKey(to='self', to_field='nid', null=True) :与自身表的nid字段进行自关联
    - class Meta:unique_together = (('user', 'article'),):
        实现表内俩个字段的联合唯一,防止数据的赃污
'''


class UserInfo(AbstractUser):
    '''
    UserInfo - 用户表(继承AbstractUser)
        -nid
        -name
        -password
        -email
        -phone
        -avatar : 用户头像
        -create_date : 用户注册时间
        -blog : 对应博客表,一对一
    '''
    nid = models.AutoField(primary_key=True)
    phone = models.CharField(max_length=32, null=True)
    # upload_to = ""      上传文件的保存路径;默认使用头像文件
    avatar = models.FileField(upload_to='avatar/', default='/static/img/default.png')
    # auto_now_add 当记录创建时自动添加当前时间
    create_date = models.DateTimeField(auto_now_add=True)

    blog = models.OneToOneField(to='Blog', to_field='nid',null=True)


class Blog(models.Model):
    '''
    Blog - 博客表
        -nid
        -title :博客标题,座右铭
        -site_name : 站点名字
        -theme :博客主题样式,可存储css文件
    '''
    nid = models.AutoField(primary_key=True)
    title = models.CharField(max_length=64)
    site_name = models.CharField(max_length=32)
    theme = models.CharField(max_length=54)


class Category(models.Model):
    '''
    Category - 文章分类表
        -nid
        -title :文章分类标题
        -blog :对应博客表,一对多关系,一个博客下课创建多个文章分类。
    '''
    nid = models.AutoField(primary_key=True)
    title = models.CharField(max_length=64)

    blog = models.ForeignKey(to='Blog', to_field='nid', null=True)


class Tag(models.Model):
    '''
    Tag - 文章关键字表
        -nid
        -title:文章关键字
        -blog:对应博客表,一对多关系,一个博客下可床架你多个文章关键字
    '''
    nid = models.AutoField(primary_key=True)
    title = models.CharField(max_length=64)

    blog = models.ForeignKey(to='Blog', to_field='nid', null=True)


class Article(models.Model):
    '''
    Article - 文章表
        - nid
        - title
        - desc :摘要
        - content :文章内容
        - create_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值