Django Admin,使用自定义函数排序

django

1个回答

写回答

Django
Django

使用Django Admin时,我们经常需要对模型中的数据进行排序。默认情况下,Django Admin会根据模型的主键进行排序,但有时我们希望能够根据自定义的函数进行排序。幸运的是,Django Admin提供了一个简单的方法来实现这一点。

Django Admin中,我们可以通过在模型的Admin类中定义一个ordering属性来自定义排序方式。这个属性接受一个由字段名组成的列表,或者是一个函数。如果我们想根据自定义的函数进行排序,我们可以将这个函数的名称传递给ordering属性。

让我们以一个简单的案例来说明如何使用自定义函数进行排序。假设我们有一个名为Product的模型,其中包含产品的名称和价格。我们希望能够根据产品名称的长度来对产品进行排序。下面是一个示例代码:

Python

from Django.contrib import admin

from .models import Product

def sort_by_name_length(product):

return len(product.name)

class ProductAdmin(admin.ModelAdmin):

ordering = ('sort_by_name_length',)

admin.site.register(Product, ProductAdmin)

在上面的代码中,我们首先定义了一个名为sort_by_name_length的函数,它接受一个产品对象作为参数,并返回产品名称的长度。然后,我们在ProductAdmin类中将ordering属性设置为('sort_by_name_length',),表示我们希望根据sort_by_name_length函数的返回值对产品进行排序。

通过这种方式,我们可以轻松地使用自定义函数来对Django Admin中的模型进行排序。这种灵活性使得我们能够根据具体需求对数据进行有序展示,提高了我们的工作效率。

示例代码:

Python

from Django.contrib import admin

from .models import Product

def sort_by_name_length(product):

return len(product.name)

class ProductAdmin(admin.ModelAdmin):

ordering = ('sort_by_name_length',)

admin.site.register(Product, ProductAdmin)

在上面的代码中,我们首先定义了一个名为sort_by_name_length的函数,它接受一个产品对象作为参数,并返回产品名称的长度。然后,我们在ProductAdmin类中将ordering属性设置为('sort_by_name_length',),表示我们希望根据sort_by_name_length函数的返回值对产品进行排序。

通过这种方式,我们可以轻松地使用自定义函数来对Django Admin中的模型进行排序。这种灵活性使得我们能够根据具体需求对数据进行有序展示,提高了我们的工作效率。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号