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

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

现在,Django抱怨参数无效。

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

威廉·范昂塞姆

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

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

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

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

MyModel.objects.order_by('ip_a')

ORM将转换为实际的数据库列,从而在该IP-A列的幕后进行排序

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章