Python Django 后台管理之后台模型属性详解

下面我来详细讲解一下“Python Django 后台管理之后台模型属性详解”的攻略。

一、介绍

在Django中,模型是创建数据库表的关键,而后台管理是我们在开发实践中需要的一个基础模块。因此,了解后台管理中的各种模型属性对于有效管理数据来说是非常重要的。

二、模型属性

下面介绍一下在Django中后台模型常用的属性。

1. verbose_name和verbose_name_plural

verbose_name属性用来设置模型对象在后台管理列表中显示的名称。verbose_name_plural则是用来设置模型对象的复数形式显示。示例如下:

class Article(models.Model):
    title = models.CharField(max_length=100, verbose_name='文章标题')
    content = models.TextField(verbose_name='文章内容')

    class Meta:
        verbose_name = '文章'
        verbose_name_plural = '文章列表'

2. ordering

用于指定模型对象在后台管理列表中排序的方式。示例如下:

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    pub_time = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['-pub_time']

3. list_display

用于指定在后台管理列表中显示哪些字段的值。示例如下:

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    pub_time = models.DateTimeField(auto_now_add=True)
    is_published = models.BooleanField(default=False)

    def __str__(self):
        return self.title

    class Meta:
        verbose_name = '文章'
        verbose_name_plural = '文章列表'
        ordering = ['-pub_time']

    def get_absolute_url(self):
        return reverse('article_detail', args=[str(self.id)])

    def published(self):
        return self.is_published == True

    published.boolean = True  # 将published函数对应的列的显示值由True/False改为勾/叉

    list_display = ('title', 'pub_time', 'published')

4. list_filter

用于指定在后台管理列表页面可以根据哪些字段进行过滤。示例如下:

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    pub_time = models.DateTimeField(auto_now_add=True)
    is_published = models.BooleanField(default=False)

    class Meta:
        verbose_name = '文章'
        verbose_name_plural = '文章列表'
        ordering = ['-pub_time']

    list_display = ('title', 'pub_time', 'is_published')
    list_filter = ('is_published', 'pub_time')

5. search_fields

用于指定在后台管理列表页面可以根据哪些字段进行搜索。示例如下:

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    pub_time = models.DateTimeField(auto_now_add=True)
    is_published = models.BooleanField(default=False)

    class Meta:
        verbose_name = '文章'
        verbose_name_plural = '文章列表'
        ordering = ['-pub_time']

    list_display = ('title', 'pub_time', 'is_published')
    list_filter = ('is_published', 'pub_time')
    search_fields = ('title', 'content')

6. date_hierarchy

用于指定在后台管理列表页面可以按照哪个字段来展开日期层级。示例如下:

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    pub_time = models.DateTimeField(auto_now_add=True)
    is_published = models.BooleanField(default=False)

    class Meta:
        verbose_name = '文章'
        verbose_name_plural = '文章列表'
        ordering = ['-pub_time']

    list_display = ('title', 'pub_time', 'is_published')
    list_filter = ('is_published', 'pub_time')
    search_fields = ('title', 'content')
    date_hierarchy = 'pub_time'

三、示例

下面演示一个具体的例子。

1. 示例一:用户管理

假设我们需要实现用户管理功能,需要定义用户模型User,模型中需要包含username、email、date_joined等字段。我们可以在模型中添加如下属性:

class User(models.Model):
    username = models.CharField(max_length=20, verbose_name='用户名')
    email = models.EmailField(max_length=255, verbose_name='邮箱地址')
    date_joined = models.DateTimeField(auto_now_add=True, verbose_name='注册时间')

    class Meta:
        db_table = 'user'
        verbose_name = '用户'
        verbose_name_plural = '用户列表'
        ordering = ['-date_joined']

    def __str__(self):
        return self.username

在User模型中,我们通过定义verbose_name和verbose_name_plural属性来指定在后台管理页面中显示的名称;通过定义db_table属性来指定表名;通过定义ordering属性来指定在后台管理页面中按照注册时间倒序排列。同时,我们可以定义__str__方法来返回对象的字符串表示形式。

2. 示例二:商品管理

假设我们需要实现商品管理功能,需要定义商品模型Good,模型中需要包含name、description、price、created_time等字段。我们可以在模型中添加如下属性:

class Good(models.Model):
    name = models.CharField(max_length=100, verbose_name='商品名称')
    description = models.TextField(verbose_name='商品描述')
    price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='商品价格')
    created_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')

    class Meta:
        db_table = 'good'
        verbose_name = '商品'
        verbose_name_plural = '商品列表'
        ordering = ['-created_time']

    def __str__(self):
        return self.name

在Good模型中,我们同样通过定义verbose_name和verbose_name_plural属性来指定在后台管理页面中显示的名称;通过定义db_table属性来指定表名;通过定义ordering属性来指定在后台管理页面中按照创建时间倒序排列。同样的,我们可以通过定义__str__方法来返回对象的字符串表示形式。

四、总结

通过本文的学习,我们可以了解到后台管理中常用的模型属性,可以帮助我们更加高效地管理数据。同时,我们还通过两个具体的示例了解了后台模型的设计和使用,帮助我们更好地理解和掌握Django框架的使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python Django 后台管理之后台模型属性详解 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • django 外键操作(转载)

    2017年09月21日 22:25:59 MonCheri_Flowers 阅读数 1170     看了这篇文章,觉得例子说的很好     我先定义两个模型,一个是作者,一个是作者出版的书籍,算是一对多的类型。 class Person(models.Model); name = models.CharField(‘作者姓名’, max_length=10…

    Django 2023年4月13日
    00
  • django前后端交互

    前后端交互的方式有两种,一种是自己写个html页面,插入数据,一种是使用django自带的后台管理,插入数据 下面介绍方式1: post.html <!DOCTYPE html> <html lang=”en”> <head> <meta charset=”UTF-8″> <title>Title&…

    Django 2023年4月13日
    00
  • Django框架使用内置方法实现登录功能详解

    Django框架使用内置方法实现登录功能详解 在web应用程序中,登录功能是非常常见的模块。在Django框架中,我们可以使用内置方法来实现登录功能。该方法相对简单,且Django提供了相应的便捷的工具类。 创建登录页面 首先,我们需要创建一个登录页面。在Django中,我们使用模板来创建我们的用户界面。在templates文件夹下创建login.html模…

    Django 2023年5月16日
    00
  • Django与Vue交互,实现注册的图片验证码没有加载的原因

    注册功能之图片验证码:   1.实现过程:   传递uuid给后端,再发送图片验证码的请求给后端,后端存储uuid并生成图片验证码保存到redis,然后将图片验证码返回给前端。   当用户输入图片验证码的时候,前端会发送uuid和用户输入的图片验证码内容给后端,后端进行比较校验。   2.实现步骤:   后端:实现接口,获取图片验证码,生成图片验证码,保存图…

    Django 2023年4月11日
    00
  • 简单介绍django提供的加密算法

    下面是详细讲解“简单介绍django提供的加密算法”的攻略: 介绍 Django 是一个使用 Python 编写的全栈框架,其中提供了多种加密算法,用于保护用户的敏感信息,例如密码、会话数据等。 在 Django 中,加密算法通常使用在以下两个方面: 存储密码时的加密:如何保护用户的密码,并在需要时验证其正确性。 生成加密令牌:如何向用户发送一个加密的令牌,…

    Django 2023年5月16日
    00
  • django_auth_ldap

    使用django_auth_ldap来实现ldap和django自己的认证系统auth 下载插件 python-ldap和django_auth_ldap 配置settings.py 一些基本说明: 设置Ldap的host地址和指定端口号 AUTH_LDAP_SERVER_URI = “ldap://”   如果Ldap不能匿名访问需设定好指定的id和密码 …

    Django 2023年4月16日
    00
  • 浅谈django的render函数的参数问题

    让我来详细讲解“浅谈django的render函数的参数问题”这个话题。在Django的开发中,我们经常使用render函数来渲染页面,render函数有多个参数,下面分别进行讲解: 必选参数request render函数的第一个参数是必需的,它代表一个HTTP请求,即客户端向服务器发出的请求。在Django中,每个请求都是一个PYTHON对象,是一个Ht…

    Django 2023年5月16日
    00
  • 如何使用Django(python)实现android的服务器端

    如何使用Django(python)实现 Android 的服务器端 在这篇攻略中,我们将会详细介绍如何在 Django 中构建一个 Android 服务器端应用程序。这个过程包括以下步骤: 创建 Django 项目并配置数据库连接 创建 Django App 数据库模型(Model)设计 编写 API 视图(Views) 视图测试 使用 Django RE…

    Django 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部