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
---恢复内容结束---