BBS项目 基本表关系

from django.db import models

# Create your models here.

from django.contrib.auth.models import AbstractUser

#用户表#继承了AbstractUser,添加我们需要的字段,手机号,头像,一对一关系class UserInfo(AbstractUser):    nid=models.AutoField(primary_key=True)    phone=models.CharField(max_length=11,null=True,unique=True)    avatar=models.FileField(upload_to="avatars/",default="avatars/default.png")    blog=models.OneToOneField(to="Blog",to_field=‘nid‘,null=True)

#定义__str__方法,直接输出对象名时,打印的是username的值    def __str__(self):        return self.username

class Meta:        #verbose_name 给模型起一个更可读性的名字        verbose_name = "用户信息"        #verbose_name_plural 模型的复数形式指定        verbose_name_plural = verbose_name

#博客表#创建博客标题 /创建博客主题class Blog(models.Model):    nid=models.AutoField(primary_key=True)    title=models.CharField(max_length=64) #博客标题    theme=models.CharField(max_length=32) #博客主题

def __str__(self):        return self.title

class Mede:        verbose_name="博客"        verbose_name_plural=verbose_name

#个人博客分类表#创建分类标题/外键关联博客,一个博客站点可以有多个分类#建立 与 博客一对多关系 一个博客里有多个分类class Category(models.Model):    nid=models.AutoField(primary_key=True)    title=models.CharField(max_length=64)    blog=models.ForeignKey(to="Blog",to_field="nid")

def __str__(self):        return self.title

class Mede:        verbose_name="文章分类"        verbose_name_plural=verbose_name

#标签#创造标签名/所属博客##建立与博客一对多关系 一个博客可以标记多个标签class Tag(models.Model):    nid = models.AutoField(primary_key=True)    title = models.CharField(max_length=32)    blog = models.ForeignKey(to="Blog", to_field="nid")

def __str__(self):        return self.title

class Meta:        verbose_name = "标签"        verbose_name_plural = verbose_name

#文章# 创建 文章标题/文章描述/创建时间#建立与博客分类一对多关系 一个博客分类里有多个文章#建立与用户一对多关系 一个用户可以写多个文章#建立多对多关联 文章和标签可以互相有多个class Article(models.Model):    nid = models.AutoField(primary_key=True)    title = models.CharField(max_length=50)    desc = models.CharField(max_length=255)    create_time = models.DateTimeField(auto_now_add=True)    category = models.ForeignKey(to="Category", to_field="nid", null=True)

user = models.ForeignKey(to="UserInfo")

tags = models.ManyToManyField(        to="Tag",        through="Article2Tag",        through_fields=("article", "tag"),    )

def __str__(self):        return self.title

class Meta:        verbose_name = "文章"        verbose_name_plural = verbose_name

#文章和标签的多对多关系表class Article2Tag(models.Model):    nid = models.AutoField(primary_key=True)    article = models.ForeignKey(to="Article", to_field="nid")    tag = models.ForeignKey(to="Tag", to_field="nid")

def __str__(self):        return "{}-{}".format(self.article, self.tag)

class Meta:        unique_together = (("article", "tag"),)        verbose_name = "文章-标签"        verbose_name_plural = verbose_name

#文章详情表#创建文本类型#建立与文章一对一关联,一个文章,只有一个文本内容class ArticleDetail(models.Model):    nid = models.AutoField(primary_key=True)    content = models.TextField()    article = models.OneToOneField(to="Article", to_field="nid")

class Meta:        verbose_name = "文章详情"        verbose_name_plural = verbose_name

#点赞表#创建布尔型是踩还是赞字段#建立与用户一对多关联,一个用户可以点赞多篇文章#建立与文章一对多关联,一个片文章可以被点多个赞class ArticleUpDown(models.Model):    nid = models.AutoField(primary_key=True)    user = models.ForeignKey(to="UserInfo", null=True)    article = models.ForeignKey(to="Article", null=True)    is_up = models.BooleanField(default=True)

class Meta:        unique_together = (("article", "user"),)        verbose_name = "点赞"        verbose_name_plural = verbose_name

#评论表#创建评论内容字段/评论时间字段#建立与用户一对多关联,一个用户可以评论多篇文章#建立与文章一对多关联,一个片文章可以被多个用户评论#建立与自己一对多关联,一条评论可以被多人评论class Comment(models.Model):    nid = models.AutoField(primary_key=True)    article = models.ForeignKey(to="Article", to_field="nid")    user = models.ForeignKey(to="UserInfo")    content = models.CharField(max_length=255)  # 评论内容    create_time = models.DateTimeField(auto_now_add=True)    parent_comment = models.ForeignKey("self", null=True)

def __str__(self):        return self.content

class Meta:        verbose_name = "评论"        verbose_name_plural = verbose_name

原文地址:https://www.cnblogs.com/yangli0504/p/9255452.html

时间: 2024-11-13 06:49:33

BBS项目 基本表关系的相关文章

Django博客项目之表关系设计

一.需要创建的表以及表之间的关系 1.User(用户信息表) User表和Blog表是一对一关系,即一个用户对应一个个人站点 2.Blog(个人站点表) 3.Category(文章分类表) Blog和Category表是一对多关系,即一个站点可以有多个分类,但是一个分类只属于一个站点 4.Tag(文章标签表) Blog和Tag表是一对多关系,即一个站点可以有多个标签,但是一个标签只属于一个站点 5.Article(文章表) User和Article表是一对多关系,即一个用户可以有多篇文章,但是一

bbs项目---表关系

表关系 用户表个人博客表点赞表文章表文章描述表文章和标签多对多关系表评论表分类表标签表 表关系设计示例收集: 1 https://bbs.csdn.net/topics/390260474 2 上图博客园供参考 3 原文地址:https://www.cnblogs.com/benson321/p/9498081.html

简单分析做过的三个项目的部分表关系

第一个项目:教务管理系统 分析其中的 用户.角色.功能.权限之间的关系: 第二个项目:网上商城 这个就不画图了,感觉上个图好丑,专业工具找不到了,见谅! 数据库表: 图书表book.图书类别bookType.顾客表customer表.顾客详细表customerDetail.菜单表menu 消息表news.订单表ordermain.订单明细表orderdetail.收货地址表shopaddress. 系统用户表sysAdmin表关系:book: n-----1 bookTypecustomer:

简单BBS项目

项目的基本要求: 掌握递归 掌握JavaScript+html+css+jsp+servlet初步应用 掌握分页写法 初步掌握前台/后台的概念 简单的功能需求: 1.能够树形展现 2.能够平板型展现 3.能够回复帖子 4.后台能够管理帖子,如:删除 <1.新建项目:右键new/project/Dynamic Web Project,项目名称为BBS,配置tomcat. <2.设计数据库的表:保留建表的语句到项目中,在项目new/folder然后引入bbs.sql: *****bbs.sql**

BSEG 和其他六个表关系

BSEG和其他六个表关系 BSEG里两个字段SAKNR(总账科目),HKONT(总账账目)的区别 HKONT里放的是凭证真实的总帐科目,SAKNR放的是供应商或客户的统驭科目. 如果某凭证行项目不是统驭科目,则SAKNR是空的,如果你输入正常的统驭科目凭证,这两个字段是相同的, 但当你输入特殊总帐凭证时,SAKNR里存的是统驭科目,HKONT放的是特殊总帐科目 BSAS+BSIS+BSAK+BSIK+BSAD+BSID = BSEG BSAS │ BSIS ==>all GL documents

django框架之BBS项目之评论功能

内容回顾    1. BBS项目 CMS        1. 登录            1. form组件            2. auth模块            3. 验证码        2. 注册            1. form组件                1. 生成html代码                    直接for循环form_obj,就能够遍历所有字段                2. 验证                    1. 默认的那些验证

ModelSerializer(重点) 基表 测试脚本 多表关系建外键 正反查 级联 插拔式连表 序列化反序列化整合 增删查 封装response

一.前戏要做好 配置:settings.py #注册drf INSTALLED_APPS = [ # ... 'api.apps.ApiConfig', 'rest_framework', ] ? #配置数据库 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'dg_proj', 'USER': 'root', 'PASSWORD': '123', } } """ 在任何(根或者

创建多对多表关系的三种方式

创建多对多表关系的三种方式 在我们之前创建多对多表的时候,一直用的都是全自动的方式来创建第三张表的. 1.全自动(推荐使用**) 好处在于 django orm会自动帮你创建第三张关系表 但是它只会帮你创建两个表的关系字段 不会再额外添加字段 虽然方便 但是第三张表的扩展性较差 无法随意的添加额外的字段 class Book(models.Model): ... authors = models.ManyToManyField(to='Author') class Author(models.M

BBS项目-01

目录 BBS项目 BBS开发流程: BBS表格创建: BBS项目 BBS开发流程: BBS项目: 开发流程: 需求分析 草拟一些项目的大致技术点和流程 架构设计 架构师(框架 语言 数据库 缓存数据库 表设计 拆分功能 项目的报价 分组开发 任务 按模块功能分的 组长在拆分功能 每个组员写几个小功能 需要提前测试一下有没有bug 交互测试 运维上线 BBS表格创建: from django.db import models from django.contrib.auth.models impo