Python 我可以在Django admin中忽略前导空格对项目进行排序吗?

Python 我可以在Django admin中忽略前导空格对项目进行排序吗?,python,django,sorting,django-admin,Python,Django,Sorting,Django Admin,我正在开发一个Django(v1.4.22)应用程序,除了一个空格外,它有许多重复项,所以管理员将其排序为“错误” 我知道正确的解决方案是删除一些SQL并删除这些空间,但目前我想帮助我们的用户。而且我还不能,因为name字段是唯一的,等等 class Meta: get_latest_by = 'date_created' ordering = ['name'] // --> Can I do something with this, like name.strip()?

我正在开发一个Django(v1.4.22)应用程序,除了一个空格外,它有许多重复项,所以管理员将其排序为“错误”

我知道正确的解决方案是删除一些SQL并删除这些空间,但目前我想帮助我们的用户。而且我还不能,因为name字段是唯一的,等等

class Meta:
    get_latest_by = 'date_created'
    ordering = ['name'] // --> Can I do something with this, like name.strip()? 
如果有字符串列表(或其他iterable集合),可以执行以下操作:

mylist = [some strings]
mylist.sort(key=lambda s: s.strip())

这将排序
mylist
,忽略左/右间距而不实际删除空格

或者使用Paulo显示的
排序
,您可以将默认查询集更改为使用“修剪”值排序(假设您的数据库支持
TRIM
)。在admin.py中:

(注意:这是作为Django数据库功能添加到开发分支中的
Trim

您可以在
排序中使用;特别是,您可以使用。就你而言:

from django.db.models import F, Func

...

class Meta:
    get_latest_by = 'date_created'
    ordering = [Func(F('name'), function='TRIM')]

我在PostgreSQL上测试了这一点,效果很好。

很酷,不知道这种方法,我总是重写
get\u queryset
来实现这一点。我得到一个
错误:无法导入name Func
,使用Django 1.4.22Django 1.4!这很旧,
Func
是在1.8中引入的。你可以试试dirkgroten的答案。我知道:(谢谢你的帮助!这对管理员视图不起作用,因为你需要订购queryset,而不是列表。
from django.db.models import F, Func

...

class Meta:
    get_latest_by = 'date_created'
    ordering = [Func(F('name'), function='TRIM')]