0
我有版本字段的模型,字符串字段。我定义了由该字段排序的Django管理员(“-version”)。
问题是python的版本比较不适用于字符串。例如:
Django管理员:定制订购
vers=['5.10.0.','5.9.0','5.8.0']
vers[0]>vers[1]
>>False
应该是真实。
如何在不更改模型的情况下编写自定义排序?
我看到this question,但它只适用于聚合函数。
注:我需要解决方案订购,不list_filter,我已经有一个答案here。我改变了查询,如下所示:
def lookups(self, request, model_admin):
qs = model_admin.queryset(request)
vers = qs.values_list('version', flat=True).distinct().order_by('-version')
s_vers = [tuple([int(x) for x in n.split('.')]) for n in vers]
s_vers = sorted(s_vers, reverse=True)
ns_vers = ['.'.join(map(str, x)) for x in s_vers]
ret_vers = []
for v in ns_vers:
ret_vers.append((v, v))
return ret_vers
我不认为这将有可能在Django管理。排序取决于模型字段,以及它们的值之间的标准比较。使用这种复杂的比较无法应用排序。 –