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管理。排序取決於模型字段,以及它們的值之間的標準比較。使用這種複雜的比較無法應用排序。 –