zoukankan      html  css  js  c++  java
  • django admin后台的简单使用

    创建自己的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'
  • 相关阅读:
    131. Palindrome Partitioning
    130. Surrounded Regions
    129. Sum Root to Leaf Numbers
    128. Longest Consecutive Sequence
    125. Valid Palindrome
    124. Binary Tree Maximum Path Sum
    122. Best Time to Buy and Sell Stock II
    121. Best Time to Buy and Sell Stock
    120. Triangle
    119. Pascal's Triangle II
  • 原文地址:https://www.cnblogs.com/ttyypjt/p/10593969.html
Copyright © 2011-2022 走看看