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)