创建自己的model.py文件

from django.db import models

from django.contrib.auth.models import (
BaseUserManager, AbstractBaseUser, AbstractUser
) # class MyUserManager(BaseUserManager):
# def create_user(self, email, name, password=None):
# """
# Creates and saves a User with the given email, date of
# birth and password.
# """
# if not email:
# raise ValueError('Users must have an email address')
#
# user = self.model(
# email=self.normalize_email(email),
# name=name,
# )
#
# user.set_password(password)
# user.save(using=self._db)
# return user
#
# def create_superuser(self, email, name, password):
# """
# Creates and saves a superuser with the given email, date of
# birth and password.
# """
# user = self.create_user(
# email,
# password=password,
# name=name,
# )
# user.is_admin = True
# user.save(using=self._db)
# return user
#
#
# class MyUser(AbstractBaseUser):
# email = models.EmailField(
# verbose_name='email address',
# max_length=255,
# unique=True,
# )
# # date_of_birth = models.DateField()
# name = models.CharField(max_length=32)
# is_active = models.BooleanField(default=True)
# is_admin = models.BooleanField(default=False)
#
# objects = MyUserManager()
#
# USERNAME_FIELD = 'email'
# REQUIRED_FIELDS = ['name']
#
# def __str__(self):
# return self.email
#
# def has_perm(self, perm, obj=None):
# "Does the user have a specific permission?"
# # Simplest possible answer: Yes, always
# return True
#
# def has_module_perms(self, app_label):
# "Does the user have permissions to view the app `app_label`?"
# # Simplest possible answer: Yes, always
# return True
#
# @property
# def is_staff(self):
# "Is the user a member of staff?"
# # Simplest possible answer: All admins are staff
# return self.is_admin # class UserInfo(AbstractBaseUser):
#
# avatar = models.ImageField(upload_to="img")
#
# class Blog(models.Model):
# info = models.CharField()
#
# class Artical(models.Model):
# title = models.CharField(max_length=128)
# publish_date = models.DateTimeField()
# author = models.ForeignKey(UserInfo, on_delete=models.CASCADE)
# content = models.OneToOneField(Blog, on_delete=models.CASCADE)
#
# class Commments(models.Model):
# user = models.ForeignKey(UserInfo, on_delete=models.CASCADE)
# c_time = models.DateTimeField()
# comments = models.CharField()
# artical = models.ForeignKey(Artical, on_delete=models.CASCADE)
# reply = models.ForeignKey("Commments", on_delete=models.CASCADE)
#
# class Tag(models.Model):
# tag_name = models.CharField()
# artical = models.ManyToManyField(Artical)
#
# class Category(models.Model):
# name = models.CharField(max_length=64)
# artical = models.ManyToManyField(Artical)
#
# class Praise(models.Model):
# tag = models.IntegerField()
# artical = models.ForeignKey(Artical, on_delete=models.CASCADE)
# user = models.ForeignKey(UserInfo, on_delete=models.CASCADE) 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", verbose_name="头像")
create_time = models.DateTimeField(auto_now_add=True) blog = models.OneToOneField(to="Blog", to_field="nid", null=True, on_delete=models.CASCADE) def __str__(self):
return self.username # class Meta:
# verbose_name="用户"
# verbose_name_plural=verbose_name class Blog(models.Model):
"""
博客信息
"""
nid = models.AutoField(primary_key=True)
title = models.CharField(max_length=64) # 个人博客标题
site = models.CharField(max_length=32, unique=True) # 个人博客后缀
theme = models.CharField(max_length=32) # 博客主题 def __str__(self):
return self.title class Meta:
verbose_name="博客信息"
verbose_name_plural=verbose_name class Category(models.Model):
"""
个人博客文章分类
"""
nid = models.AutoField(primary_key=True)
title = models.CharField(max_length=32) # 分类标题
blog = models.ForeignKey(to="Blog", to_field="nid", on_delete=models.CASCADE) # 外键关联博客,一个博客站点可以有多个分类 def __str__(self):
return self.title class Meta:
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", on_delete=models.CASCADE) # 所属博客 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() # 创建时间 category = models.ForeignKey(to="Category", to_field="nid", null=True, on_delete=models.CASCADE)
user = models.ForeignKey(to="UserInfo", to_field="nid", on_delete=models.CASCADE)
tags = models.ManyToManyField( # 中介模型
to="Tag",
through="Article2Tag",
through_fields=("article", "tag"), # 注意顺序!!!
) comment_count = models.IntegerField(verbose_name="评论数", default=0)
updown = models.IntegerField(verbose_name="点赞数", default=0) def __str__(self):
return self.title class Meta:
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", on_delete=models.CASCADE) 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", on_delete=models.CASCADE)
tag = models.ForeignKey(to="Tag", to_field="nid", on_delete=models.CASCADE) class Meta:
unique_together = (("article", "tag"),)
verbose_name="文章对标签"
verbose_name_plural=verbose_name class ArticleUpDown(models.Model):
"""
点赞表
"""
nid = models.AutoField(primary_key=True)
user = models.ForeignKey(to="UserInfo", null=True, on_delete=models.CASCADE)
article = models.ForeignKey(to="Article", null=True, on_delete=models.CASCADE)
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", on_delete=models.CASCADE)
user = models.ForeignKey(to="UserInfo", to_field="nid", on_delete=models.CASCADE)
content = models.CharField(max_length=255) # 评论内容
create_time = models.DateTimeField(auto_now_add=True)
parent_comment = models.ForeignKey("self", null=True, blank=True, on_delete=models.CASCADE) def __str__(self):
return self.content class Meta:
verbose_name="评论"
verbose_name_plural=verbose_name

models.py

注册自己的models.py到admin后台

from django.contrib import admin
from jax import models # Register your models here. admin.site.register(models.UserInfo)
admin.site.register(models.Blog)
admin.site.register(models.Category)
admin.site.register(models.Tag)
admin.site.register(models.Article)
admin.site.register(models.Article2Tag)
admin.site.register(models.ArticleDetail)
admin.site.register(models.ArticleUpDown)
admin.site.register(models.Comment)

扩展django默认的用户表

# settings.py文件还可以更改语言类型

LANGUAGE_CODE = 'zh-hans'
settings.py

AUTH_USER_MODEL = 'jax.UserInfo'

django admin后台的简单使用的更多相关文章

  1. django博客项目6:Django Admin 后台发布文章

    在此之前我们完成了 Django 博客首页视图的编写,我们希望首页展示发布的博客文章列表,但是它却抱怨:暂时还没有发布的文章!如它所言,我们确实还没有发布任何文章,本节我们将使用 Django 自带的 ...

  2. Django Admin后台添加用户时出现报错:1452

    如果在使用Django Admin后台添加用户时出现报错: (1452, 'Cannot add or update a child row: a foreign key constraint fai ...

  3. django admin后台插件:django-suit入门

    去年9月底开始用django来做公司内部项目,开始对django有了一些了解,感觉django真的蛮强大的(也有很多人推荐flask,将来有空的话我会试试).今天的话只是介绍一个小东西,django管 ...

  4. Django admin 后台管理

    在App 文件夹下的 admin.py 文件中写入 from django.contrib import admin from app名 import models admin.site.site_h ...

  5. Django Admin后台管理模块的使用

    Admin后台管理模块的使用 Django的管理员模块是Django的标准库django.contrib的一部分.这个包还包括其它一些实用的模块: django.contrib.auth django ...

  6. Django - admin后台、auth权限

    admin后台 一.创建一个管理员用户 (1).设置时区.语言(可选步骤) 打开settings.py,改成下面那样 LANGUAGE_CODE = 'zh-Hans' TIME_ZONE = 'As ...

  7. django admin后台(数据库简单管理后台)

    只需要简单的几行胆码就可以生成一个完整的管理后台 这个就是django魅力之一 创建超级用户 python manage.py createsuperuser     ----  之后会提示输入用慕名 ...

  8. django admin后台提示没有static样式相关的文件

    问题现象: 将 DEBUG = TEMPLATE_DEBUG = False 设置为False后,访问admin的管理后台,没有样式了.  解决办法: vim settings.py 确保有下面的这两 ...

  9. 实现django admin后台到xadmin后台的转变

    虽然不做前端,还是喜欢好看的东西~.~ 之前同事估计也是功能实现没空管这个后台,前段时间闲的,稍微改了下外貌,前后对比下: Python3.5+Django1.9.7+Xadmin0.6.1 步骤如下 ...

随机推荐

  1. centos7+tomcat部署JavaWeb项目超详细步骤

    我们平时访问的网站大多都是发布在云服务器上的,比如阿里云.腾讯云等.对于新手,尤其是没有接触过linux系统的人而言是比较有困难的,而且至今使用云服务器也是有成本的,很多时候我们可以通过虚拟机自己搭建 ...

  2. python 字符编码处理问题总结

    Python中常常遇到这种字符编码问题,尤其在处理网页源代码时(特别是爬虫中): UnicodeDecodeError: ‘XXX' codec can't decode bytes in posit ...

  3. 530.Minimum Absolute Difference in BST 二叉搜索树中的最小差的绝对值

    [抄题]: Given a binary search tree with non-negative values, find the minimum absolute difference betw ...

  4. SpringBoot全局异常的捕获设置

    1.新建立一个捕获异常的实体类 如:LeeExceptionHandler package com.leecx.exception; import javax.servlet.http.HttpSer ...

  5. paho_c_pub 使用方法

    Latest Paho Status (2) 摘自:http://modelbasedtesting.co.uk/ I last wrote about the state of Paho in Oc ...

  6. https://itunes.apple.com/cn/app/apache-overkill/id410553807?mt=8uo%3D6

    https://itunes.apple.com/cn/app/apache-overkill/id410553807?mt=8uo%3D6 http://eplusgames.net/games/s ...

  7. Oracle 更新Opatch、打补丁

    1.更新Opatch; 2.打补丁; 3.grid 打补丁; 1.更新Opatch(实验版本:oracle:11.2.0.3.0): 默认安装数据库后,在ORACLE_HOME 下会有个OPatch ...

  8. SNP芯片的原理

    Illumina的SNP芯片原理 Illumina的SNP生物芯片的优势在于: 第1,它的检测通量很大,一次可以检测几十万到几百万个SNP位点 第2,它的检测准确性很高,它的准确性可以达到99.9%以 ...

  9. 不设置环境变量 直接启动tomcat

    window: 设置 startup.bat set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_144set JRE_HOME=C:\Program Files ...

  10. [GO]goroutine的使用

    package main import ( "fmt" "time" ) func NewTask() { for true { fmt.Println(&qu ...