58.1 BBS

1.BBS表关系

记忆:

 2.创建表   看点:1.userInfo 表继承AbstractUser(即使用django自带的字段,并可以扩展自己的字段)  并在setting文件中配置    auth模块功能不受影响

                             2.  多对多表关系创建 关系表字段可扩展,

   

# 告诉 django 使用UserInfo为user表
AUTH_USER_MODEL = 'app01.UserInfo'
from django.db import models
from django.contrib.auth.models  import  AbstractUser
# Create your models here.
#用户表继承auth_user表
class  UserInfo(AbstractUser):
    phone = models.BigIntegerField(null=True)
    #用户上传
    avatar = models.FileField(upload_to='avatar/',default='avatar/default.png')
    create_time = models.DateField(auto_now_add=True)

    blog = models.OneToOneField(to='Blog')

class Blog(models.Model):
    site_name = models.CharField(max_length=32)
    site_title = models.CharField(max_length=64)
    #该字段用来模拟每个人的站点央视
    site_theme = models.CharField(max_length=64)


class  Category(models.Model):
    name = models.CharField(max_length=32)

    blog = models.ForeignKey(to='Blog')


class  Tag(models.Model):
    name = models.CharField(max_length=32)

    blog = models.ForeignKey(to='Blog')

class  Article(models.Model):
    title = models.CharField(max_length=64)
    #摘要
    desc = models.CharField(max_length=254)
    content = models.TextField()
    create_time = models.DateField(auto_now_add=True)

    #一对多分类表
    category = models.ForeignKey(to='Category')

    #多对多标签表
    tags = models.ManyToManyField(to='Tag',through='Article2Tag',through_fields=('article','tag'))
    #一对多个人站点
    blog = models.ForeignKey(to='Blog')

    #数据库优化设计
    comment_num = models.BigIntegerField(null=True)
    up_num = models.BigIntegerField(null=True)
    down_num = models.BigIntegerField(null=True)

class Article2Tag(models.Model):
    article = models.ForeignKey(to='Article')
    tag = models.ForeignKey(to='Tag')




class  UpAndDown(models.Model):
    user = models.ForeignKey(to='UserInfo')
    article = models.ForeignKey(to='Article')
    is_up = models.BooleanField()


class Comment(models.Model):
    user = models.ForeignKey(to='UserInfo')
    article = models.ForeignKey(to='Article')
    content = models.CharField(max_length=254)
    comment_time = models.DateField(auto_now_add=True)
    # 自关联
    parent  = models.ForeignKey(to='self', null=True)
原文地址:https://www.cnblogs.com/bigbox/p/12495048.html