- 数据库的创建
创建数据库
from django.db import models from blog import settings # Create your models here. from django.contrib.auth.models import AbstractUser class UserInfo(AbstractUser): ''' 用户信息表 继承AbstractUser 可以直接使用相当于扩充django默认的user可以使用django内置的功能 需要导入 from django.contrib.auth.models import AbstractUser 并且需要在setting中添加设置 AUTH_USER_MODEL='app01.UserInfo' 告诉django你自定义的用户表app名字.表名 ''' nid=models.AutoField(primary_key=True) #主键 phone=models.CharField(verbose_name='手机号',max_length=11,null=True,unique=True) #手机号unique唯一 avatar=models.FileField(verbose_name='头像',upload_to=settings.UPLOAD_TO,default=settings.DEFAULT_AVATAR)#头像 create_time=models.DateTimeField(verbose_name='创建时间',auto_now_add=True) blog=models.OneToOneField(to='Blog',to_field='nid',null=True,on_delete=models.SET_NULL)#关联博客表,一对一 class Blog(models.Model): ''' 博客信息表 ''' nid=models.AutoField(primary_key=True) title=models.CharField(verbose_name='个人博客标题',max_length=64) site_name=models.CharField(verbose_name='站点名称',max_length=64) theme=models.CharField(verbose_name='博客主题',max_length=32,default='default.css') def __str__(self): return self.title class Category(models.Model): ''' 博主个人文章分类表 ''' nid=models.AutoField(primary_key=True) title=models.CharField(verbose_name='分类标题',max_length=32) blog=models.ForeignKey(verbose_name='所属博客',to='blog',to_field='nid',on_delete=models.CASCADE) class Tag(models.Model): ''' 标签表 ''' nid=models.AutoField(primary_key=True) title=models.CharField(verbose_name='标签名称',max_length=32) blog=models.ForeignKey(verbose_name='所属博客',to='Blog',to_field='nid',on_delete=models.CASCADE) class Article(models.Model): ''' 文章表 ''' nid=models.AutoField(primary_key=True) title=models.CharField(max_length=50,verbose_name='文章标题') desc=models.CharField(max_length=255,verbose_name='文章描述') create_time=models.DateTimeField(verbose_name='创建时间',auto_now_add=True) content = models.TextField(verbose_name='文章内容', ) comment_count=models.IntegerField(verbose_name='评论数',default=0) up_count=models.IntegerField(verbose_name='点赞数',default=0) down_count=models.IntegerField(verbose_name='被踩数',default=0) user=models.ForeignKey(verbose_name='作者',to='UserInfo',to_field='nid',on_delete=models.CASCADE) category =models.ForeignKey(to='Category',to_field='nid',null=True,verbose_name='文章分类',on_delete=models.SET_NULL) tags=models.ManyToManyField( verbose_name='文章关联标签', to='Tag', through='Article2Tag', through_fields=('article','tag'), ) def __str__(self): return self.title class Article2Tag(models.Model): nid=models.AutoField(primary_key=True) article=models.ForeignKey(verbose_name='文章',to='Article',to_field='nid',on_delete=models.CASCADE) tag=models.ForeignKey(verbose_name='标签',to='Tag',to_field='nid',on_delete=models.CASCADE) class Meta: unique_together=[ ('article','tag'), ] class ArticleUpDown(models.Model): ''' 点赞表 ''' nid=models.AutoField(primary_key=True) user=models.ForeignKey('UserInfo',null=True,on_delete=models.CASCADE) article=models.ForeignKey('Article',null=True,on_delete=models.CASCADE) is_up=models.BooleanField(default=True) class Meta: unique_together=[ ('article','user'), ] class Comment(models.Model): ''' 评论表 ''' nid=models.AutoField(primary_key=True) article=models.ForeignKey(verbose_name='评论文章',to='Article',to_field='nid',on_delete=models.CASCADE) user=models.ForeignKey(verbose_name='评论者',to='UserInfo',to_field='nid',on_delete=models.CASCADE) content=models.CharField(verbose_name='评论内容',max_length=255) create_time=models.DateTimeField(verbose_name='创建时间',auto_now_add=True) parent_comment=models.ForeignKey('self',null=True,on_delete=models.CASCADE)
相关文章: