django的orm操作的补充
---恢复内容开始---
你在建立一个登陆的时候需要用到auth这个用户登陆模块 这个时候就需要用到user表中的信息你就可以继承 这个时候我们的用户表中继承我们user继承的表 ABstractUser表 然后再在settings内设置信息告诉django
AUTH_USER_MODEL="once.UserInfo" AUTH_USER_MODEL = '你的app.UserInfo'
就是告诉你的django你的models内继承了这个类
然后导入这个类
from django.contrib.auth.models import AbstractUser
from django.contrib.auth.models import AbstractUser # 导入一个你的auth组件需要用到的user的继承的类 这样我们就可以让我们新建立的用户表也可以用到了我们auth的内容
我们后面会用到django提供的web版本的数据库操作方便添加信息 这个时候就需要你的创建数据库的时候给你的字段赋值 让你的 django的可以方便识别
verbose_name 这个是给你的字段加上一个web数据库可以识别的信息
models:
from django.db import models
# Create your models here.
from django.contrib.auth.models import AbstractUser # 导入一个你的auth组件需要用到的user的继承的类 这样我们就可以让我们新建立的用户表也可以用到了我们auth的内容
class UserInfo(AbstractUser):
'''
用户信息表
'''
nid = models.AutoField(primary_key = True) #设置一个id主键
telephone = models.CharField(max_length = 11,null= True, unique = True ) #设置手机号 可以为空 然后不可以相同
avatar = models.FileField(upload_to = 'avatars/', default = 'avatars/default.png') # 这个是设置一个存放关于 user的用户的图片的信息都放在这个所建立的文件夹内
create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add = True)
blog = models.OneToOneField(to='Blog',to_field='nid',null= True,on_delete=models.CASCADE)
#人和博客是一对一的 所以是一对一的建立
#不哟个再此设置姓名密码了 因为继承的有
def __str__(self):
return self.username
# verbose_name这个字段代表的是你的数据库在关联界面的时候进行的操作 可以显示在web关联界面的
class Blog(models.Model):
'''
博客信息
'''
nid = models.AutoField(primary_key = True)
title = models.CharField(verbose_name='个人博客标题',max_length= 64)
size_name = models.CharField(verbose_name = '站点名称', max_length = 64)
theme = models.CharField(verbose_name = '博客主题',max_length = 32)
def __str__(self):
return self.title
class Category(models.Model):
'''
博主的个人文章分类表
'''
nid = models.AutoField(primary_key = True)
title = models.ForeignKey(to='Blog',verbose_name = '所属博客', to_field='nid', on_delete=models.CASCADE)
def __str__(self):
return self.title
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)
def __str__(self):
return self.title
class Article(models.Model):
'''
文章表
'''
nid = models.AutoField(primary_key = True)
title = models.CharField(max_length = 60,verbose_name = '文章标题')
desc = models.CharField(max_length = 300,verbose_name = '文章描述')
create_time = models.DateTimeField(verbose_name = '创建时间',auto_now_add= True)
cntent = models.TextField() #评论内容
comment_count = models.IntegerField(default = 0) #评论数量
up_count = models.IntegerField(default = 0) # 点赞
down_count = models.IntegerField(default = 0) # 踩的数量
user = models.ForeignKey(to ='Category', to_field='nid',null=True,on_delete= models.CASCADE) # 这个是把文章和分类建立起外键
tags = models.ManyToManyField(
to = 'Tag',
through = 'Article2Tag', #第三张表你可以自己创建也可以你选择的创建用through来创建第三张关系表
)
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')
]
def __str__(self):
v = self.article.title+'---'+self.tag.title
return v
class ArticleUpDown(models.Model):
'''
点赞表
'''
nid = models.AutoField(primary_key = True)
user = models.ForeignKey('UserInfo',null=True,on_delete=models.CASCADE) #和userinfo建立起外键
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('Comment',null = True,on_delete=models.CASCADE) #自己关联自己其实就是为了你的评论的时候找到是哪个评论的 然后就根据你上一次的评论的来回复 就是你要找到你要回复的是哪一个评论
def __str__(self):
return self.content
models
---恢复内容结束---
django的orm操作的补充的更多相关文章
- Django之ORM操作
Django之ORM操作 前言 Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计 ...
- Django之ORM操作(聚合 分组、F Q)
Django之ORM操作(聚合 分组.F Q) 聚合 aggregate()是QuerySet的一个终止子句,也就是说,他返回一个包含一些键值对的字典,在它的后面不可以再进行点(.)操作. 键的名 ...
- Django之ORM操作(***)
Django之ORM操作(***) http请求的流程: url--> 视图view(模板+数据库) --> ORM的功能: 可以转换SQL语句,并做操作. ORM操作数据表: -创建表: ...
- 【Django】ORM操作#2
目录 必知必会的13条查询方法 单表查询之神奇的双下划线 一对多 ForeignKey 多对多 ManyToManyField 在Python脚本中调用Django环境 Django终端打印SQL语句 ...
- 【Django】ORM操作#1
目录 一.介绍 概念 由来 优势 劣势 总结 二.Django中的ORM Django项目使用MySQL Model 快速入门 1. AutoField 2. IntegerField 3. Char ...
- django的orm操作优化
django的orm操作优化 models.py from django.db import models class Author(models.Model): name = models.Char ...
- Django中ORM操作
ORM操作: class UserInfo(models.Model): username = models.CharField(max_length=32) password = models.Ch ...
- Django的ORM操作
ORM操作 select * from tb where id > 1 # 对应关系 models.tb.objects.filter(id__gt=1) models.tb.objects.f ...
- Django之ORM操作总结
Django之ORM总结 表结构 from django.db import models # 一对多:班级与学生 # 多对多:班级与老师 # Create your models here. #创建 ...
随机推荐
- WCF系列教程之WCF操作协定
一.简介 1.在定义服务协定时,在它的操作方法上都会加上OperationContract特性,此特性属于OperationContractAttribute 类,将OperationContract ...
- @SafeVarargs注解
被@SafeVarargs注解标注的方法必须是由static或者final修饰的方法. 使用泛型的变长参数方法产生编译器警告的示例: public static <T> T useVara ...
- jgGrid注销表格(动态修改表头)以及前台分页
实例代码 <!doctype html> <html lang="en"> <head> <meta charset="UTF- ...
- 关于JNI调用从eclipse转到Android Studio遇到的问题(总结)
将一个小应用从eclipse开发迁移到android studio,程序中有native代码实现,在eclipse是靠Android.mk这么个mk文件来组织编译的,但到android studio上 ...
- WPF中后台代码停止RepeatBehavior=RepeatBehavior.Forever的办法
1.在使用Begin()方法启动动画的时候,要将isControlable设置成true,就是Begin方法的第二个参数 scanningStoryBoard.Begin(this,true);// ...
- C#删除只读文件
File.SetAttributes(fileRealPath, FileAttributes.Normal);//先将文件设置成普通属性 //...你的删除文件的代码
- jQuery插件开发之windowScroll
回首望,曾经洋洋得意的代码现在不忍直视.曾经看起来碉堡的效果现在也能稍微弄点出来.社会在往前发展,人也得向前迈进. 参考于搜狗浏览器4.2版本首页的上下滚动效果.主要实现整个窗口的上下和左右滚动逻辑, ...
- 记一次接口调用耗时服务端PHP-FPM配置调优
最近测试人员不时有反馈,APP首页打开会出现除了基本的页面布局,需要展示数据的地方都是空白. 想着最近首页接口有过调整,新增数据.会不会是接口改动导致的?? 但APP首页接口都是读取redis的,应该 ...
- 打乱数组——shuffle
在学习vue移动端音乐项目时,看到一个打乱数组函数,感觉很有意思就记录一下(意外发现:slice是个有趣的知识点) 原理:遍历数组,(let i = 0; i < _arr.length; i+ ...
- SQL Serever学习15——进阶
特别说明:在sqlserver2014中,不区分大小写,也就是说,SQL是大小写不敏感的 数据库模型3类: 层次模型 网状模型 关系模型 关系型数据库语言3种: DDL数据定义语言 CREATE(创建 ...