Python 我可以在Django admin中忽略前导空格对项目进行排序吗?
我正在开发一个Django(v1.4.22)应用程序,除了一个空格外,它有许多重复项,所以管理员将其排序为“错误” 我知道正确的解决方案是删除一些SQL并删除这些空间,但目前我想帮助我们的用户。而且我还不能,因为name字段是唯一的,等等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()?
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')]