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之表单和类视图-Part 4

    为了接收用户的投票选择,我们需要在前端页面显示一个投票界面。让我们重写先前的polls/detail.html文件,代码如下: <h1>{{ question.question_text }}</h1> {% if error_message %}<p><strong>{{ error_message }}&l…

    Django 2023年4月10日
    00
  • Django + Axios & Ajax post和get 传参

    话说千遍淡如水,不如代码来一通。   Axios post: let params = new URLSearchParams(); params.append(‘id’,xx) axios({ url:’http://127.0.0.1:8000/userctrl/shoucang’, method:’post’, data:params, respons…

    Django 2023年4月13日
    00
  • Python Django中间件详细介绍

    下面就是“Python Django中间件详细介绍”的完整攻略,包含两条示例说明: 介绍 Django中间件(Middleware)是一个可以介入Django请求/响应处理过程的实现机制。通过中间件,用户可以干预Django的request/response处理流程,修改request/response响应的方式和内容。 Django中间件可以方便的实现以下…

    Django 2023年5月16日
    00
  • Django之多对多查询与操作方法详解

    Django之多对多查询与操作方法详解 在Django中,多对多关系是非常常见且重要的关系之一,学习多对多查询与操作方法对于开发Django应用程序非常有用。下面将对多对多关系的查询及操作方法进行详细讲解。 多对多查询 多对多查询的核心在于通过中间表进行查询。在Django中,对于多对多关系,会默认生成一个中间表来连接两个相关的模型类。假设有两个模型类Boo…

    Django 2023年5月16日
    00
  • 深入了解Django中间件及其方法

    一、Django中间件简介 Django中间件是用于在Django请求和响应过程中添加额外功能的一种机制,它可以拦截请求,处理响应以及对请求和响应进行修改等操作,并在Django的处理流程中的特定时间点执行。使用中间件可以对Django的请求和响应进行增强、改善,甚至可以进行性能优化、安全扫描等,同时也可以方便地实现登录验证、身份验证、权限控制等功能。 Dj…

    Django 2023年5月16日
    00
  • django基于mysql实现图片上传与打开

    1:在models.py文件中建立数据表  from django.db import models  class User(models.Model): img = models.ImageField(upload_to=’img’,null=True)   因为我是后来添加的图片字段,所以需要在里面加个null=True,至于Upload_to是文件板寸…

    Django 2023年4月13日
    00
  • 详解Django admin高级用法

    详解Django admin高级用法 Django admin是Django自带的管理员后台管理系统,可以方便地进行数据库管理,数据展示,数据处理等功能。本文将详细讲解如何使用Django admin的高级用法。 1. 自定义管理器 在Django admin中,如果希望对某个Model进行管理时,需要先创建一个管理器类,例如: from django.co…

    Django 2023年5月16日
    00
  • django+vue 基础框架 :vue

    <template> <div> <p>用户名:<input type=”text” v-model=”name”></p> <p>密码:<input type=”password” v-model=”pwd”></p> <p>年龄:<input…

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