Django admin 给数据表某一列加入排序功能

Django admin 给数据表某一列加入排序功能

Django admin 给数据表某一列加入排序功能

在使用Django开发项目时,我们经常会用到Django admin来管理数据表。Django admin提供了一个快速、方便的后台管理功能,让开发人员可以直接在浏览器中对数据库进行操作。但是有时候我们会发现Django admin默认是没有排序功能的,即使我们在数据表中设置了某一列是可以排序的,但在Django admin中并不能直接点击列头进行排序。所以本文将详细介绍如何给Django admin中的数据表某一列加入排序功能。

步骤

1. 在数据模型中设置排序字段

首先,我们需要在我们的数据模型中设置一个字段作为排序的字段。假设我们有一个Book模型,我们想要根据书籍的价格进行排序,那么我们就需要在Book模型中添加一个价格字段。

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=50)
    price = models.DecimalField(max_digits=5, decimal_places=2)

    def __str__(self):
        return self.title

2. 在admin中注册模型并配置排序功能

接下来,我们需要在admin.py文件中注册Book模型,并配置排序功能。首先导入Book模型和admin模块。

from django.contrib import admin

from .models import Book

然后,我们需要在BookAdmin类中添加list_display和ordering属性。list_display设置我们在Django admin中显示的字段,ordering设置我们默认的排序字段。

@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'price')
    ordering = ('price',)

3. 运行项目查看效果

最后,我们需要运行我们的Django项目,登录到Django admin后台,进入Book模型的管理页面,就可以看到我们新增的价格字段,并且可以通过点击价格字段进行排序了。

示例

下面是一个完整的示例,包括Book模型的定义、admin.py的配置以及在Django admin中的效果展示。

models.py

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=50)
    price = models.DecimalField(max_digits=5, decimal_places=2)

    def __str__(self):
        return self.title

admin.py

from django.contrib import admin

from .models import Book

@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'price')
    ordering = ('price',)

运行结果

登录到Django admin后台,选择Book模型,可以看到价格字段已经可以被排序了,效果如下图所示:

书名        作者        价格        
Book1       Author1    20.00      
Book2       Author2    25.00      
Book3       Author3    30.00

总结

通过以上步骤,我们成功给Django admin中的数据表某一列加入了排序功能。在实际开发中,我们可以根据自己的需求在数据模型中设置不同的排序字段,并在admin中进行配置,以方便数据的管理和查看。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程