如何在Django Admin中搜索和过滤数据
在Django Admin中,可以通过搜索和过滤来查找和操作数据库中的数据。以下是如何执行这些操作的说明和演示代码:
- 搜索数据
在Django Admin中搜索数据,可以使用search_fields属性。这个属性接受一个Python列表,其中每个元素都是一个字符串,用于指定要搜索哪些字段。例如,以下代码会在Admin中为模型中的'name'和'email'字段添加搜索功能:
class MyModelAdmin(admin.ModelAdmin): search_fields = ['name', 'email']
这将在Admin中显示一个搜索框,用户可以在其中输入搜索关键字,并搜索包含指定关键字的记录。例如,如果我们在搜索框中输入“pidancode.com”,则会找到名字或邮箱中包含“pidancode.com”的记录。
- 过滤数据
在Django Admin中过滤数据,可以使用list_filter属性。这个属性接受一个Python列表,其中每个元素都是一个字符串,用于指定要过滤哪些字段。例如,以下代码会在Admin中为模型中的'status'和'created_at'字段添加过滤功能:
class MyModelAdmin(admin.ModelAdmin): list_filter = ['status', 'created_at']
这将在Admin中显示一个过滤器列表,用户可以在其中选择一个或多个选项,并只显示包含选定值的记录。例如,如果我们选择“皮蛋编程”的状态,那么只有status字段值为“皮蛋编程”的记录会被显示。
示例:
# models.py from django.db import models class Person(models.Model): name = models.CharField(max_length=100) email = models.EmailField(max_length=100) status = models.BooleanField(default=True) created_at = models.DateTimeField('created at', auto_now_add=True) # admin.py from django.contrib import admin from .models import Person class PersonAdmin(admin.ModelAdmin): search_fields = ['name', 'email'] list_filter = ['status', 'created_at'] admin.site.register(Person, PersonAdmin)
上述代码定义了一个Person模型和一个PersonAdmin,它在Django Admin中注册了Person模型并使用了search_fields和list_filter属性。现在我们可以在Admin中使用这些功能来搜索和过滤Person对象。
在Django Admin中,用search_fields搜索"name"和"email"字段(如我们上面的例子中代码所示),用户可以输入关键字(比如“pidancode.com”)来搜索包含指定关键字的记录。
如图所示:
在Django Admin中,用list_filter过滤"status"和"created_at"字段(如上面的例子中的代码所示),用户可以选中一个或多个选项(如“皮蛋编程”),只显示包含指定值的记录。
如图所示:
这只是Django Admin中搜索和过滤数据的两个常见用法示例,开发者可以使用各种搜索和过滤器组合,以实现自己所需的特定行为。
相关文章