Django:如何在order_by中处理特殊字符

问题描述 投票:1回答:1

我需要通过列列表订购Django查询集。其中一些包含减号,例如IP-A。

现在Django抱怨参数无效。

用这些字符处理列的正确方法是什么?重命名列不是一种选择,因为模型已修复。

django sql-order-by django-queryset special-characters
1个回答
0
投票

通常[使用的字段名称是您在模型类中定义的变量。除非您使用一些复杂的度量标准,否则这些都是有效的Python标识符,并且它们不能包含连字符(-)。

一个人可以使用db_column=… parameter [Django-doc]将Django模型中的字段名称转换为数据库中的不同列名称。例如:

db_column=…

但是,在Django ORM中以及几乎所有与模型对象的交互中,数据库侧的列名称都可以看作是“技术细节”。 ORM使用字段名称。因此,您可以使用以下方法对模型对象进行排序:

class MyModel(models.Model): ip_a = models.CharField(max_length=128, db_column='IP-A')

ORM将转换为实际的数据库列,从而在MyModel.objects.order_by('ip_a')列的幕后进行排序。
© www.soinside.com 2019 - 2024. All rights reserved.