我在Django订购中遇到了一个奇怪的问题。由于某些原因,我无法按多个字段订购列表视图。
这是我的课程。
class Syslog(models.Model):
receivedat = models.DateTimeField(default=timezone.now)
facility = models.PositiveSmallIntegerField()
priority = models.PositiveSmallIntegerField()
fromHost = models.CharField(max_length=50)
message = models.TextField(max_length=500)
class Meta:
ordering = ['id','receivedat', 'fromHost']
这也是我的视图类:
class HomePageView(ListView):
model = Syslog
template_name = 'home.html'
context_object_name = 'all_logs'
paginate_by = 10
ordering = ['-id', 'receivedat', 'fromHost']
如果指定了ordering
中的单个字段(例如ordering = ['-id']
),但是当我添加第二个或第三个参数时,所有内容都恢复为默认值(仅顺序的第一个字段被识别)< / p>
有人遇到类似的问题吗?
同样的问题仍然存在于Django shell中。当我执行以下查询Syslog.objects.all().order_by('id')
时,一切看起来都不错,但是当我向order_by添加另一个字段(例如Syslog.objects.all().order_by('id','fromHost')
)时,第二个字段根本无法识别。
关于, 乔丹
答案 0 :(得分:2)
对此的了解-> Syslog.objects.all().order_by('id','fromHost')
使用此-> Syslog.objects.order_by('id','fromHost')
删除.all()
答案 1 :(得分:0)
在解决我的问题后,我想出了为什么我没有得到我期望的结果。问题是我的开发数据集非常相似,并且由于对象的相似性,其排序更改未反映在模板上。