1. 数据库的创建
    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)
    创建数据库

相关文章:

  • 2022-12-23
  • 2021-04-10
  • 2021-11-19
  • 2021-12-06
  • 2022-01-15
  • 2021-06-10
  • 2021-05-07
猜你喜欢
  • 2021-09-10
  • 2021-06-27
  • 2022-12-23
  • 2021-12-23
  • 2021-06-01
  • 2021-12-02
相关资源
相似解决方案