安全网站开发,免费咨询妇科,优化网站要多少钱,设计公司官网需要发什么BBS模型层搭建 目录 BBS模型层搭建建表思想配置文件模型层User应用#xff1a;Blog应用#xff1a;Article应用#xff1a; 建表思想 配置文件
settings.py#xff1a;
# 默认用户模型指定
AUTH_USER_MODEL User.Userinfo底部添加即可#xff0c;用于替换默认的Abstrac…BBS模型层搭建 目录 BBS模型层搭建建表思想配置文件模型层User应用Blog应用Article应用 建表思想 配置文件
settings.py
# 默认用户模型指定
AUTH_USER_MODEL User.Userinfo底部添加即可用于替换默认的AbstractUser用户表 STATIC_URL /static/
STATIC_DIRS [os.path.join(BASE_DIR, User/static)
]创建static静态地址 DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: BBS,USER: root,PASSWORD: 7997,HOST: 127.0.0.1,PORT: 3306,CHARSET: utf8,}
}更改默认数据库 模型层
User应用
# models.pyfrom django.db import models
from django.contrib.auth.models import AbstractUser# 用户表
class Userinfo(AbstractUser):phone models.CharField(verbose_name手机号, help_text手机号, max_length11, nullTrue)avatar models.FileField(verbose_name头像, help_text头像, nullTrue, defaultstatic/avatar/default.png)register_time models.TimeField(verbose_name注册时间, help_text注册时间, auto_now_addTrue)last_login_time models.TimeField(verbose_name最近登录时间, help_text最近登录时间, nullTrue)is_deleted models.BooleanField(verbose_name注销状态, help_text注销状态, defaultFalse)# 一对一绑定站点表blog models.OneToOneField(Blog.Blog, verbose_name关联站点, help_text关联站点,on_deletemodels.CASCADE,related_nameblog, nullTrue)class Meta:# 指定数据库在后台显示的名字verbose_name 用户表verbose_name_plural verbose_namedb_table Userinfo# admin.pyfrom django.contrib import admin
from User.models import Userinfo# Register your models here.# 创建一个类并用它来定制Userinfo
admin.register(Userinfo)
# 这个类必须继承 admin.ModelAdmin
class UserinfoAdmin(admin.ModelAdmin):# 后台展示的信息默认是全部都展示但是可以定制展示的字段list_display [username, last_name, email, phone, avatar, register_time, last_login_time,is_deleted, blog]Blog应用
# models.py
from django.db import models# 个人站点表
class Blog(models.Model):site_name models.CharField(verbose_name站点名, help_text站点名, max_length20, nullTrue)site_title models.CharField(verbose_name站点标题, help_text站点标题, max_length20, nullTrue)site_theme models.CharField(verbose_name站点样式, help_text站点样式, max_length255, nullTrue)# 一对多绑定分类表article_category models.ForeignKey(Article.ArticleCategory, verbose_name关联分类, help_text关联分类,on_deletemodels.CASCADE, related_nameblog)# 一对多绑定标签表article_tags models.ForeignKey(Article.ArticleTags, verbose_name关联标签, help_text关联标签,on_deletemodels.CASCADE, related_nameblog)class Meta:# 指定数据库在后台显示的名字verbose_name 个人站点表verbose_name_plural verbose_namedb_table Blog# 广告信息表
class Adv(models.Model):title models.CharField(verbose_name广告标题, help_text广告标题, max_length64)content models.TextField(verbose_name广告详情, help_text广告详情)create_time models.DateTimeField(verbose_name创建时间, help_text创建时间, auto_nowTrue)update_time models.DateTimeField(verbose_name更新时间, help_text更新时间, auto_now_addTrue)mobile models.CharField(verbose_name手机号, help_text手机号, max_length11,default, blankTrue)img models.ImageField(verbose_name广告图片, help_text广告图片,upload_tostatic/advImg/, default)class Meta:# 指定数据库在后台显示的名字verbose_name 广告信息表verbose_name_plural verbose_namedb_table Adv# admin.pyfrom django.contrib import admin
from Blog.models import Blog, Advadmin.register(Blog)
class BlogAdmin(admin.ModelAdmin):# 后台展示的信息默认是全部都展示但是可以定制展示的字段list_display [site_name, site_title, site_theme, article_category, article_tags]admin.register(Adv)
class AdvAdmin(admin.ModelAdmin):# 后台展示的信息默认是全部都展示但是可以定制展示的字段list_display [title, content, create_time, update_time, mobile, img]Article应用
# models.pyfrom django.db import models# 文章表
class Article(models.Model):title models.CharField(verbose_name标题, help_text标题, max_length32, nullTrue)desc models.CharField(verbose_name描述, help_text描述, max_length255, nullTrue)context models.TextField(verbose_name内容, help_text内容, nullTrue)create_time models.DateTimeField(verbose_name发布时间, help_text发布时间, auto_now_addTrue, nullTrue)up_num models.BigIntegerField(verbose_name点赞数, help_text点赞数, nullTrue)down_num models.BigIntegerField(verbose_name点踩数, help_text点踩数, nullTrue)comment_num models.BigIntegerField(verbose_name评论数, help_text评论数, nullTrue)# 多对多绑定标签表tags models.ManyToManyField(ArticleTags, verbose_name评论内容, help_text评论内容,throughArticleToTags, through_fields[article, tag])class Meta:# 指定数据库在后台显示的名字verbose_name 文章表verbose_name_plural verbose_namedb_table article# 文章分类表
class ArticleCategory(models.Model):name models.CharField(verbose_name分类名称, help_text分类名称, max_length32, nullTrue)# 一对多绑定文章表article models.ForeignKey(Article, verbose_name评论内容, help_text评论内容, on_deletemodels.CASCADE,related_namearticle_category, nullTrue)class Meta:# 指定数据库在后台显示的名字verbose_name 文章分类表verbose_name_plural verbose_namedb_table article_category# 文章标签表
class ArticleTags(models.Model):name models.CharField(verbose_name标签名称, help_text标签名称, max_length32, nullTrue)## # 多对多绑定文章表# article models.ForeignKey(Article, verbose_name关联文章, help_text关联文章, on_deletemodels.CASCADE,# related_namearticle_tags, nullTrue)class Meta:# 指定数据库在后台显示的名字verbose_name 文章标签表verbose_name_plural verbose_namedb_table article_tags# 文章点赞点踩表
class UpDown(models.Model):up_num models.BigIntegerField(verbose_name点赞数, help_text点赞数, nullTrue)down_num models.BigIntegerField(verbose_name点踩数, help_text点踩数, nullTrue)# 一对多绑定用户表user models.ForeignKey(User.Userinfo, verbose_name关联用户, help_text关联用户, on_deletemodels.CASCADE,related_nameup_down, nullTrue)# 一对多绑定文章表article models.ForeignKey(Article, verbose_name关联文章, help_text关联文章, on_deletemodels.CASCADE,related_nameup_down, nullTrue)class Meta:# 指定数据库在后台显示的名字verbose_name 文章点赞点踩表verbose_name_plural verbose_namedb_table up_down# 文章评论表
class Comment(models.Model):content models.TextField(verbose_name评论内容, help_text评论内容, nullTrue)comment_time models.DateTimeField(verbose_name发布时间, help_text发布时间, nullTrue)# 一对多绑定用户表user models.ForeignKey(User.Userinfo, verbose_name关联用户, help_text关联用户, on_deletemodels.CASCADE,related_namecomment, nullTrue)# 一对多绑定文章表article models.ForeignKey(Article, verbose_name关联文章, help_text关联文章, on_deletemodels.CASCADE,related_namecomment, nullTrue)# 自关联表 表示评论的上下级关系parent_comment models.ForeignKey(self, verbose_name上级评论, help_text上级评论, on_deletemodels.SET_NULL,blankTrue, nullTrue, related_nameson_comment)class Meta:# 指定数据库在后台显示的名字verbose_name 文章评论表verbose_name_plural verbose_namedb_table comment# 多对多绑定文章表和标签表
class ArticleToTags(models.Model):tag models.ForeignKey(ArticleTags, verbose_name关联标签, help_text关联标签, on_deletemodels.CASCADE,related_namearticle_to_tags, nullTrue)article models.ForeignKey(Article, verbose_name关联文章, help_text关联文章, on_deletemodels.CASCADE,related_namearticle_to_tags, nullTrue)class Meta:# 指定数据库在后台显示的名字verbose_name 多对多绑定文章表和标签表verbose_name_plural verbose_namedb_table article_to_tags# admin.pyfrom django.contrib import admin
from Article.models import Article, ArticleCategory, ArticleTags, UpDown, Comment, ArticleToTagsadmin.register(Article)
class ArticleAdmin(admin.ModelAdmin):# 后台展示的信息默认是全部都展示但是可以定制展示的字段list_display [title, desc, context, create_time, up_num, down_num, comment_num]admin.register(ArticleCategory)
class ArticleCategoryAdmin(admin.ModelAdmin):# 后台展示的信息默认是全部都展示但是可以定制展示的字段list_display [name,article]admin.register(ArticleTags)
class ArticleTagsAdmin(admin.ModelAdmin):# 后台展示的信息默认是全部都展示但是可以定制展示的字段list_display [name]admin.register(UpDown)
class UpDownAdmin(admin.ModelAdmin):# 后台展示的信息默认是全部都展示但是可以定制展示的字段list_display [up_num, down_num, user, article]admin.register(Comment)
class CommentAdmin(admin.ModelAdmin):# 后台展示的信息默认是全部都展示但是可以定制展示的字段list_display [content, comment_time, user, article, parent_comment]admin.register(ArticleToTags)
class Article_To_TagsAdmin(admin.ModelAdmin):# 后台展示的信息默认是全部都展示但是可以定制展示的字段list_display [tag, article]
mment)
class CommentAdmin(admin.ModelAdmin):# 后台展示的信息默认是全部都展示但是可以定制展示的字段list_display [content, comment_time, user, article, parent_comment]admin.register(ArticleToTags)
class Article_To_TagsAdmin(admin.ModelAdmin):# 后台展示的信息默认是全部都展示但是可以定制展示的字段list_display [tag, article]