【问题标题】:Django ordering by multiple fieldsDjango按多个字段排序
【发布时间】:2020-11-25 17:36:11
【问题描述】:

我在 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']),但当我添加第二个或第三个参数时,一切都恢复为默认值(只有第一个排序字段被识别)

有人遇到过类似的问题吗?

同样的问题也存在于 Django shell 中。当我执行以下查询 Syslog.objects.all().order_by('id') 时,一切看起来都不错,但是当我向 order_by 添加另一个字段(例如 Syslog.objects.all().order_by('id','fromHost'))时,第二个字段根本无法识别。

问候, 约旦

【问题讨论】:

    标签: django orm sql-order-by


    【解决方案1】:

    这个-> Syslog.objects.all().order_by('id','fromHost')

    使用这个 -> Syslog.objects.order_by('id','fromHost')

    删除.all()

    【讨论】:

    【解决方案2】:

    在解决了我的问题后,我弄清楚了为什么我没有得到预期的结果。问题是我的开发数据集非常相似,虽然排序发生了变化,但由于对象的相似性,它没有反映在模板上。

    【讨论】:

      猜你喜欢
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多