📌  相关文章
📜  'ordering[0]' 的值是指 'username',它不是 'users.User' 的属性 (1)

📅  最后修改于: 2023-12-03 15:29:06.405000             🧑  作者: Mango

'ordering[0]' 的值是指 'username',它不是 'users.User' 的属性

在Django中,Ordering是一个用来指定查询结果排序顺序的选项,用起来非常方便。在进行查询时,我们可以使用Ordering来指定我们要按哪个字段进行排序,但需要注意的是,Ordering只能指定模型中存在的字段进行排序,不能指定模型关联对象的属性进行排序。

在给定的问题中,'ordering[0]' 的值是指 'username',它实际上是User模型中的一个字段。但是,在进行排序时,我们需要注意到User模型中还有一条与其他模型进行关联的较强的外键关系。

如果我们要按照与User模型关联的模型的属性进行排序,那么我们需要使用__字段名的方法来指定此特殊排序方法。例如,在进行与User模型关联的排序时,我们可以使用以下代码:

order_by = 'users__User.username'

需要注意的是,在进行排序时,我们需要确保关联对象中使用的字段名是我们要排序的字段名,否则将导致查询失败。

因此,我们在进行排序时需要注意以上问题,确保我们要排序的字段名在模型中存在,如果要按照关联模型中的属性进行排序,需要使用__字段名的方式进行指定。