我需要通过列列表订购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] 删除。
我来说两句