Python Django管理员:自定义订购
我有一个模型的版本字段,一个字符串字段。我通过该字段(“-version”)定义了Django管理员排序Python Django管理员:自定义订购,python,django,django-admin,django-filter,Python,Django,Django Admin,Django Filter,我有一个模型的版本字段,一个字符串字段。我通过该字段(“-version”)定义了Django管理员排序 问题是python的版本比较在字符串方面不起作用。例如: vers=['5.10.0.','5.9.0','5.8.0'] vers[0]>vers[1] >>False 应该是真的 如何在不更改型号的情况下编写自定义订单? 我看到了,但它只适用于聚合函数。 注意:我需要订购的解决方案,而不是列表过滤器,我已经有了答案。我将查找更改如下: 下面是我如何解决这个问题的:
问题是python的版本比较在字符串方面不起作用。例如:
vers=['5.10.0.','5.9.0','5.8.0']
vers[0]>vers[1]
>>False
应该是真的如何在不更改型号的情况下编写自定义订单?
我看到了,但它只适用于聚合函数。
注意:我需要订购的解决方案,而不是列表过滤器,我已经有了答案。我将查找更改如下:
下面是我如何解决这个问题的:
class MyModelAdmin(admin.ModelAdmin):
def get_queryset(self, request):
qs = super(MyModelAdmin, self).get_queryset(request)
qs = qs.extra(select={'nversion': "string_to_array(version, '.')::bigint[]"}).order_by('-nversion')
return qs
def vers(self, obj):
return obj.nversion
ordering = ('-nversion',)
下面是我如何解决这个问题的:
class MyModelAdmin(admin.ModelAdmin):
def get_queryset(self, request):
qs = super(MyModelAdmin, self).get_queryset(request)
qs = qs.extra(select={'nversion': "string_to_array(version, '.')::bigint[]"}).order_by('-nversion')
return qs
def vers(self, obj):
return obj.nversion
ordering = ('-nversion',)
我认为这在django admin中是不可能的。排序取决于模型字段及其值之间的标准比较。使用如此复杂的比较无法应用排序。我认为这在django管理中是不可能的。排序取决于模型字段及其值之间的标准比较。使用如此复杂的比较无法应用排序。